我尝试执行以下操作,我在这里缺少什么?
DELETE FROM escrow WHERE host = '$name' OR challenger = '$name' AND id='$match_id'
答案 0 :(得分:1)
当您在任何编程语言的任何情况下使用AND
和OR
始终时,请使用括号。有一个隐含的顺序首先被评估(AND
或OR
条件)但你通常不知道顺序,不应该需要在手册中查找
同样使用Prepared statements进行依赖于变量的SQL查询。
在你的情况下,你要么写
... WHERE (host = ? OR challenger = ?) AND id = ?
或
... WHERE host = ? OR (challenger = ? AND id = ?)
取决于您想要的条件。
此外,当SQL查询因任何原因失败时,请检查从数据库获取的错误消息。它会告诉你查询有什么问题。但是,没有返回任何行的有效查询(因为WHERE条件与任何行不匹配)仍然是有效查询而不是错误,结果只是空。