首页 > 解决方案 > PHP (pdo) 限制数据库中的更改和从 html 中的更改

问题描述

我是 php 新手,遇到了一些我不知道如何解决的问题,我制作了一个 HTML 表单,应该更改数据库的名称

<div class="form-group">
    <form action="name.php" method="post">
        <input type="text" class="form-control" name="name">
        <input type="submit" value="Submit" name="submit">
    </form>
</div>

HTML表单也连接到PHP编辑脚本

<?php

$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "tbl_product";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql ="UPDATE tbl_product SET name='$name' WHERE id = ID LIMIT 1";

    // Prepare statement
    $stmt = $conn->prepare($sql);

    // execute the query
    $stmt->execute();

    // echo a message to say the UPDATE succeeded
    echo $stmt->rowCount() . " records UPDATED successfully";
    header("Refresh:0; url=products.php");
    }
catch(PDOException $e)
    {
    echo $sql . "<br>" . $e->getMessage();
    }

$conn = null;
?>      

我运行的脚本不会更改数据库名称,如果它更改它会更改所有数据库名称。现在,看起来脚本运行良好,但什么也没发生。我需要限制来自数据库的更改数据,因此一项更改不会全部更改。

标签: phpphpmyadmin

解决方案


你必须在where子句中设置id,然后它只会更新与id匹配的一行,你不需要设置LIMIT 1。

$sql ="UPDATE tbl_product SET name='$name' WHERE id = $id";

您可以从表单中的隐藏输入中获取 id。

<div class="form-group">
    <form action="name.php" method="post">
        <input type="hidden" class="form-control" name="id" value="<?php echo $id; ?>">
        <input type="text" class="form-control" name="name">
        <input type="submit" value="Submit" name="submit">
    </form>
</div>

推荐阅读