为什么 MYSQLi 不更新数据库记录而是给出成功消息



我已经清理了我的代码,以便将以下内容作为我的表单。但是我在发送数据和从新更新.php更新时遇到问题。表单可以正常工作,可以检索数据并显示它。但是在提交时,我收到确定的更新消息,但数据库中的记录没有更改任何想法。 索引.php

<?php
include 'connectdb.php';
// include 'query.php';
$sql = "SELECT id, WeightorMeasure FROM weightsmeasures";
$result = $conn->query($sql)       
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<form action="update.php"method="post">";
echo "<input type="text" name="id" value = ".$row["id"].">";
echo "<input type="text" name="WeightorMeasure" value = ".$row["WeightorMeasure"] .">";
echo "<input type="submit" value=" Submit " name="Update">";
}
echo "</form>";
} else {
echo "0 results";
}  
$conn->close();
?>

更新.php

<?php
include 'connectdb.php';
$wm = $_POST['id'];
$id = $_POST['WeightorMeasure'];
$sql = "UPDATE weightsmeasures SET WeightorMeasure='$wm' WHERE id='$id'";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
$conn->close();
?>

已更改为"下面",现在收到此错误。 更新记录时出错:"字段列表"中出现未知列"sdada"。因此,看起来它试图将表单值$wm用作表中的列标题而不是输入值。

$wm = $_POST['WeightorMeasure'];
$id = $_POST['id'];

$sql = "UPDATE weightsmeasures SET WeightorMeasure=$wm WHERE id=$id";
$wm = $_POST['id'];
$id = $_POST['WeightorMeasure'];      

也许你用错了这些?:D

$wm = $_POST['WeightorMeasure'];
$id = $_POST['id'];

顺便说一下,您的查询容易受到 MySQL 注入的影响,请考虑使用预准备语句

您意识到您在变量分配中切换了 ID 和 WeightOrMeasure,从 $_POST 数据中切换了? 这会导致更新查询找不到 ID,但不会遇到问题。从而告诉您操作成功

我找出了您的代码中可能存在的问题。

mysqli_query($conn, $sql); //should be $conn->query($sql); 

和这条线

$wm = $_POST['id']; //$_POST['WeightorMeasure'];
$id = $_POST['WeightorMeasure'];//$_POST['id'];

顺序错误。 我希望您已经在 dpconnect.php 文件中创建了$conn对象。

Ok 发现问题是上述 $_POST["WeightorMeasure"]; 和 $_POST["id"]; 混淆但最重要的因素是我发布的表包含多行,并且在_POST更新时.php它不知道如何处理所有不同的行,因为 SQL 只处理一行。一旦我通过帖子发送了单行,它就可以正常工作。现在按照建议学习和添加准备好的语句。

更新.php

<?php
include 'connectdb.php';
$wm = $_POST["WeightorMeasure"];
$id = $_POST["id"];
echo $wm . "<br>";
echo $id . "<br"; 
$sql = "UPDATE weightsmeasures SET WeightorMeasure="$wm", id= 
$idWHERE id= $id";
if (mysqli_query($conn, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
$conn->close();
?>

手动单次输入。 索引.php

<?php
include 'connectdb.php';
// include 'query.php';
$sql = "SELECT id, WeightorMeasure FROM weightsmeasures WHERE id=11";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "<form action="update.php"method="post">";
echo "<input type="text" name="id" value = ".$row["id"].">";
echo "<input type="text" name="WeightorMeasure" value = ".$row["WeightorMeasure"].">";
echo "<input type="submit" value=" Submit " name="Update">";
}         
echo "</form>";
} else {
echo "0 results";
}  
$conn->close();
?>

最新更新