我尝试执行以下命令,我在这里缺少什么?
DELETE FROM escrow WHERE host = '$name' OR challenger = '$name' AND id='$match_id'
最佳答案
在任何情况下,在任何编程语言中一起使用 AND
和 OR
时,始终使用括号。有一个首先计算的隐式顺序(AND
或 OR
条件),但您通常不知道该顺序,因此不需要查看它在手册中
也可以使用Prepared statements用于依赖于变量的 SQL 查询。
在你的情况下,你要么写
... WHERE (host = ? OR challenger = ?) AND id = ?
或
... WHERE host = ? OR (challenger = ? AND id = ?)
取决于你想要什么条件。
此外,当 SQL 查询由于某种原因失败时,请检查从数据库获得的错误消息。它会告诉您查询出了什么问题。但是,不返回任何行的有效查询(因为 WHERE 条件不匹配任何行)仍然是有效查询,而不是错误,结果只是空。
关于使用 WHERE AND OR 的 MySQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33448553/