我无法将新价格更新到数据库中。数据库不会更新。我不确定我的代码出错了。
while($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>" . $row['Menu_id']. " </td>";
echo "<td>" . $row['Menu_type']. " </td>";
echo "<td>" ."<input type =text name=Price value =" .$row['Price']. " </td>";
echo "<td>" ."<input type=submit name=Update value=Update"." </td>";
echo "<td>" ."<input type =hidden name=hidden value = " .$row['Menu_id']. " </td>";
echo "</tr>";
}
echo "</table>";
}
if(isset($_POST['Update'])){
$sqlAdd = "UPDATE Menu SET Price ='$_POST[Price]' WHERE Menu_id ='$_POST[hidden]'";
$result = mysqli_query($con, $sqlAdd );
if(mysqli_query($con, $sqlAdd)){
echo '<p><strong><font color = "red">The price for Menu id '.$Menu_id.' is updated.</strong></font>';
//redirect page
header('Refresh :5 ; url = UpdateMenuPrice.php');
}
else {
echo "failed <br>";
}
价格未更新。
答案 0 :(得分:0)
您忘记了右括号以及您的查询格式不正确
echo "<td>" ."<input type =text name=Price value =" .$row['Price']. "></td>";
echo "<td>" ."<input type=submit name=Update value=Update >"." </td>";
echo "<td>" ."<input type =hidden name=hidden value = " .$row['Menu_id']. "> </td>";
echo "<td>" ."<input type =text name=Price value =" .$row['Price']. "></td>";
echo "<td>" ."<input type=submit name=Update value=Update >"." </td>";
echo "<td>" ."<input type =hidden name=hidden value = " .$row['Menu_id']. "> </td>";
使用$ _REQUEST,$ _POST,$ _GET时,您必须使用单引号
这是您的查询。
$sqlAdd = "UPDATE Menu SET Price ='".$_POST['Price']."' WHERE Menu_id ='".$_POST['hidden']."'";
答案 1 :(得分:0)
您忘记关闭每个输入元素上的尖括号。
您还应该在HTML表单值周围加上引号。您可以使用反斜杠,单引号转义的双引号,或使用HEREDOC语法,如下所示:
while($row = mysqli_fetch_assoc($result)) {
echo <<<HTML
<tr>
<td>{$row['Menu_id']}</td>
<td>{$row['Menu_type']}</td>
<td><input type="text" name="Price" value="{$row['Price']}"></td>
<td><input type="submit" name="Update" value="Update"></td>
<td><input type="hidden" name="hidden" value="{$row['Menu_id']}"></td>
</tr>
HTML;
}
echo "</table>";
更新部分中的$ _POST变量不应该用引号括起来,但在方括号中应该有单引号(与$ row数组在上面显示的方式相同)。
最后,使用您的代码,人们很容易破解您的数据库以读取所有数据库数据,删除或更改它。您需要使用预准备语句来阻止SQL注入。