这有可能吗?
假设我有一张表: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 种可能性。
对于 checking
和 box
的两种组合,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/