MySql - 你如何使用OR的多个WHERE子句

时间:2014-09-25 21:20:19

标签: php mysql sql pdo

我一直在寻找如何正确地做到这一点但没有得到任何好结果的几个小时,所以认为id试试我的运气并问你们。所以这是我的剧本:

$q = $handler->prepare("SELECT * FROM users WHERE status = ? AND membership = ? AND confirmation = ? AND alpha_status = ? AND approved = ? AND type = ? OR type2 = ? OR type3 = ? OR type4 = ? OR type5 = ?");
$q->bindParam(1, $yes);
$q->bindParam(2, $good);
$q->bindParam(3, $good);
$q->bindParam(4, $good);
$q->bindParam(5, $yes);
$q->bindParam(6, $search);
$q->bindParam(7, $search);
$q->bindParam(8, $search);
$q->bindParam(9, $search);
$q->bindParam(10, $search);
$q->execute();

$howMany = $q->rowCount();

所以一切正常但它只是抓住了数据库中的一切。我猜多个OR不起作用。我想要实现的是通过搜索标准的用户数量。使用"类型"所有用户都有5种类型添加到他们的帐户。它可以是Alpha Bravo Charlie Delta Echo等。因此,如果一个用户键入2是Bravo,则另一个用户可能在类型5中使用Bravo。因此,我试图获得将Bravo作为一种类型的用户总数。希望我解释它会。提前致谢

2 个答案:

答案 0 :(得分:6)

使用括号建立运算符优先级:

 AND approved = ? AND (type = ? OR type2 = ? OR type3 = ? OR type4 = ? OR type5 = ?)");

答案 1 :(得分:0)

您还可以使用in来简化查询,只要求$search包含一次

SELECT u.*
FROM users u
WHERE status = ? AND membership = ? AND confirmation = ? AND alpha_status = ? AND
      approved = ? AND
      ? in (type, type2, type3, type4, type5)