Php 为什么MYSQLi没有更新DB记录,而是给出成功消息
我已经清理了我的代码,将以下内容作为我的表单。但是我在从new update.php发送数据和更新时遇到了问题。表单在检索数据并显示数据时正常工作。但在提交时,我收到了ok更新消息,但数据库中的记录没有任何更改。 index.phpPhp 为什么MYSQLi没有更新DB记录,而是给出成功消息,php,mysqli,Php,Mysqli,我已经清理了我的代码,将以下内容作为我的表单。但是我在从new update.php发送数据和更新时遇到了问题。表单在检索数据并显示数据时正常工作。但在提交时,我收到了ok更新消息,但数据库中的记录没有任何更改。 index.php <?php include 'connectdb.php'; // include 'query.php'; $sql = "SELECT id, WeightorMeasure FROM weightsmeasures"; $result
<?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
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();
?>
也许你拿错了D
$wm = $_POST['WeightorMeasure'];
$id = $_POST['id'];
您的查询是使用VLUN到MySQL注入的方式,请考虑使用准备好的语句
< P>您意识到在您的$POST数据中的变量赋值中转换了ID和权重度量吗?这会导致更新查询无法找到ID,但不会出现问题。因此,告诉您操作成功了我发现您的代码中可能存在以下问题
mysqli_query($conn, $sql); //should be $conn->query($sql);
这条线呢
$wm = $_POST['id']; //$_POST['WeightorMeasure'];
$id = $_POST['WeightorMeasure'];//$_POST['id'];
顺序不对。我希望您已经在dpconnect.php文件中创建了$conn对象 Ok发现问题是上述因素的混合,有$u POST[WeightorMeasure];和$_POST[id];混合但最重要的因素是,我发布的表包含多行,并且在_postto update.php上,它不知道如何处理所有不同的行,因为SQL只处理一行。一旦我通过邮件发送了单行,它就工作得很好。现在学习并添加建议的准备好的语句 update.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();
?>
<?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();
?>
手动单输入。
index.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
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();
?>
值属性应该用单引号或双引号括起来。因为值为,所以字符串之间没有空格。如果字符串之间有任何空间,字符串的第一部分只考虑其他字符串或忽略的值,那么MySQL查询是正确的用法。他使用的是过程而不是对象。你是对的,他使用$conn对象获取数据表单数据库,并在update.php文件中包含相同的连接文件。我认为他应该使用对象。@WillParky93这里没有什么好发现的。他可以随心所欲地使用任何风格,这一点都没有问题。PHP以大量的疯狂迷信而闻名,这个答案基于其中一个迷信。不要阻止它进一步传播,记下它可能是一个好的开始