带有删除查询的MySQL查询问题

时间:2015-01-08 07:01:51

标签: php mysql

我无法修复此查询 尝试了很多次,我仍然得到MySQL语法错误

//MySqli Delete Query
$mysqli->query("DELETE FROM `deliverys` WHERE id=" . $row['id'] . "");

有什么问题?

3 个答案:

答案 0 :(得分:2)

老兄,在这里做一些基本的调试,回显你提交给数据库的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的列,或者可能是您正在连接的用户,而不是#39} ; t具有权限。有时,MySQL返回的实际错误消息将为您提供有关错误的线索。)

这里没有足够的上下文,但看起来你的代码在这里受SQL注入...更好地使用带有绑定占位符的预准备语句。希望有某种保证,它不会评估为 1 OR 1=1 这样的价值。

答案 1 :(得分:0)

尝试硬编码值而不是使用$ row [' id']。如果它正在运行您的$ row [' id']变量未正确设置。确保$ row [' id']通过echo它有一个整数值。

答案 2 :(得分:0)

$mysqli->query("DELETE FROM deliverys WHERE id=".$row['id']);