php - 使用 JSON 和 PHP 更新 MySQL 数据库
问题描述
我有一个要填充的 HTML 表单,然后使用 JSON 将表单数据发送到 PHP 页面,在这个阶段我检查了控制台日志上发送的数据,它确实被发送到 PHP 页面,然后我发送使用 foreach 循环将数据传输到 MySQL 数据库,这就是我遇到问题的地方。
数组 $_POST 中的最后一个输入为 HTML 表单中的 $key => $entry 是唯一被发送到数据库的数据,其余数据没有被发送,我的意思是如果我有六对 $ key=> $entry 输入,只有最后一对 n $Key=>$entry 输入被发送到数据库,我尝试了各种方法,但没有任何效果。
我认为我的问题在于foreach
循环更新。
foreach ($_POST as $key => $entry) {
$sql = "UPDATE form SET Quantity='$entry' WHERE Pipesize='$key'";
echo "$key"." ". 'has input of'." ". "$entry","<br>";
}
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
mysqli_close($conn);
解决方案
mysqli_query 在循环之后,所以它只会执行最后一个。将 mysqli_query 放在循环中。并使用准备好的语句来防止 sql 注入并且永远不要在没有检查的情况下直接使用 $_POST 人们可以轻松地操纵您的发布请求
foreach ($_POST as $key => $entry) {
$sql = "UPDATE form SET Quantity='$entry' WHERE Pipesize='$key'";
echo "$key"." ". 'has input of'." ". "$entry","<br>";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
}
mysqli_close($conn);
准备好的语句的例子,没有测试它。如果您想了解有关准备好的陈述的更多信息,请查看 w3schools
$stmt = $conn->prepare("UPDATE form SET Quantity = ? WHERE Pipesize = ?");
$stmt->bind_param('ii', $entry, $key);
foreach ($_POST as $key => $entry) {
$stmt->execute();
echo "$key"." ". 'has input of'." ". "$entry","<br>";
if ($stmt->affected_rows > 0) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . $stmt->error;
}
}
$stmt->free_result();
$stmt->close();
推荐阅读
- html - FB Like and Share button coming in front of fixed positioned div
- javascript - 使用 jQuery 创建表 - 在 javaScript 中追加
- html - 模拟链接点击而不移动其他链接
- c# - 3ds Max C# 插件 Class_ID 可能未实例化
- php - 未定义的索引错误消息
- asp.net-mvc - 如何限制 Grid.MVC 中的分页大小
- jquery - 如何在另一个元素jquery的中心为可拖动元素设置动画
- android - TensorFlowInferenceInterface 返回低值
- ios - UIView transform.scaleBy 动画不起作用
- c++11 - 使用值作为结构数据类型更新 std::map