php - 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;
?>
我运行的脚本不会更改数据库名称,如果它更改它会更改所有数据库名称。现在,看起来脚本运行良好,但什么也没发生。我需要限制来自数据库的更改数据,因此一项更改不会全部更改。
解决方案
你必须在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>
推荐阅读
- python - 使用 Cronjob (crontab) 运行 PySpark 不起作用
- reactjs - 使用钩子响应一个接一个发生的 CSS 动画
- python - 模块“scipy”没有属性“规范”
- netsuite - 在套件脚本 2.0 中调用 search.load 时出现意外错误
- c++ - mallopt() 还会控制 C++ 原生“新”的行为吗?
- ios - iOS:在应用内购买产品后会显示默认提醒
- nginx - 如何在 nginx 配置中获取环境变量名
- react-hooks - React Hooks useState 及时更新
- ios - 由于 podfile 中的模块化标头设置,Flutter iOS 无法构建
- python - 与 Keras 决斗 DQN