使用 WHERE AND OR 的 MySQL 语句

标签 mysql where-clause

我尝试执行以下命令,我在这里缺少什么?

DELETE FROM escrow WHERE  host = '$name' OR challenger = '$name' AND id='$match_id'

最佳答案

在任何情况下,在任何编程语言中一起使用 ANDOR 时,始终使用括号。有一个首先计算的隐式顺序(ANDOR 条件),但您通常不知道该顺序,因此不需要查看它在手册中

也可以使用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/

相关文章:

MYSQL 每日平均值

php - 在codeigniter中加入三个sql表后,找不到所需的id

Mysql 左连接右表中的条件

非规范化表上的 MySQL WHERE 子句

javascript - 使用 javascript 将 accessdb 中的列的 SUM 填充到文本框中

sql - SQL 中 HAVING 和 WHERE 子句的区别

php - 使用 Ajax 和 Codeigniter 的评论系统

mysql - 如何选择连接条件的特定值?

Mysql 不忽略不在我的 SQL 查询中的列

php - MySQL - 选择而不是更新进行测试