>我无法修复此查询尝试了很多次,我仍然收到MySQL语法错误
//MySqli Delete Query
$mysqli->query("DELETE FROM `deliverys` WHERE id=" . $row['id'] . "");
请问有什么问题?
伙计,在这里做一些基本的调试,回显出你提交给数据库的SQL文本。
$sql = "DELETE FROM `deliverys` WHERE id=" . $row['id'] ;
echo "SQL=" . $sql;
if (!$mysqli->query($sql)) {
echo "ERROR: " . $mysqli->error;
}
并针对来自不同客户端的数据库测试该语句,验证它是否为有效的 SQL 语句。
我们可以对SQL语法错误进行一些猜测,例如,如果$row['id']
计算为空格或空字符串,我们知道SQL语句将是无效的。但我们真的只是猜测。 也许$row['id']
计算出生成无效 SQL 语句的其他值。 (也许没有名为 deliverys
的表,或者该表不包含名为 id
的列,或者您连接的用户没有权限。有时,MySQL返回的实际错误消息会为您提供有关问题所在的线索。
这里没有足够的上下文,但看起来你的代码在这里受 SQL 注入的影响......最好使用带有绑定占位符的预准备语句。 希望有某种保证,它永远不会评估到像1 OR 1=1
这样的值。
尝试硬编码值而不是使用$row['id']。如果它正在工作,您的 $row['id'] 变量设置不正确。通过回显它确保$row['id'] 有一个整数值。
$mysqli->query("DELETE FROM deliverys WHERE id=".$row['id']);