删除查询的 MySQL 查询问题


MySQL Query Issue with a Delete Query

>我无法修复此查询尝试了很多次,我仍然收到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']);