php - 在带有 PDO 的同一 mysql 语句中使用 'AND' 和 'OR'

标签 php mysql sql pdo

这有可能吗?

假设我有一张表:data

$id_1 = "checking";
$id_2 = "box";
$id_users = 1;

id    id_1        id_2         id_users
1     checking    box             1
2     checking    circle          1
3     box         checking        1
4     box         checking        1

$sql = $db->prepare("SELECT COUNT(*) FROM data WHERE ((id_1 = ? AND id_2= ?) OR (id_1 = ? AND id_2 = ?)) AND id_users = ?");
$sql -> execute(array($id_1, $id_2, $id_2, $id_1, $id_users));
echo count($sql);

有了这个,我得到的输出只有 1。从技术上讲,我应该得到 3 的输出,对吗?因为检查和框有 3 种可能性。

对于 checkingbox 的两种组合,SQL 应该检查任一表。

谁能告诉我我做错了什么?

谢谢

最佳答案

看起来你是 count()正在计算已计算的 SQL COUNT 行数。
echo $sql 怎么样?

$sql = $db->prepare("SELECT COUNT(*) FROM data WHERE ((id_1 = ? AND id_2= ?) OR (id_1 = ? AND id_2)) AND id_users = ?");
$sql->execute(array($id_1, $id_2, $id_2, $id_1, $id_users));
echo $sql->fetch();

关于php - 在带有 PDO 的同一 mysql 语句中使用 'AND' 和 'OR',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10184977/

相关文章:

mysql - 设计用于存储具有任意数量字段的表的数据库

php - Kohana 中这个常数的意义何在?

php - 有没有办法找出哪个文件使用了require_once?

MySQL INTERVAL 分钟数

mysql 命令行访问被拒绝错误 1045

mysql - 是否可以全局配置 mysql 数据库中的所有 char/varchar/text 列以使用 utf8?

sql - 无法级联删除@OneToOne 成员

php - MySQL 在事务中重置 AUTO_INCREMENT

php - 如何查看MySQL查询错误详情?

mysql - SQL 修剪通配符模式