我在从数据库中删除时不断遇到此错误。它在其他服务器上工作,没有错误消息。我在这里挠头。$ id是一个数字(MySQL表中的ID列),我无法弄清楚。我看到了一些与我的代码相匹配的答案,但我仍然明白。这是代码。
$db = new mysqli('localhost', 'user', 'pass', 'table');
// get id number
$id=$_GET['page'];
if ($db->connect_errno) {
echo "Failed to connect to MySQL: ("
. $db->connect_errno . ") " . $db->connect_error;
}
$query =
"DELETE FROM listing WHERE id='$id'";
$conn = $db->prepare($query);
// the problem line
$conn->bind_param('i', $id);
if ($conn->execute()) {
print "Successfully deleted the entry";
} else {
echo ' No ';
$db->close();
}
准备要点是不要直接插入变量 - 也就是说,您不必执行WHERE id='$id'
。相反,Mysqli为您照顾了这一点。实际上,您甚至不需要报价。
您想要的是将一个占位符放在那里,这样:
$query = "DELETE FROM listing WHERE id = ?";
然后,当您以后绑定参数时,系统会寻找占位符:
$conn->bind_param('i', $id);
'i'
的意思是将$id
视为整数。