php/pdo从多个条件中选择列

mzillmmw  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(337)

我正在尝试获取状态为挂起或接受的给定成员的结果,请执行以下操作:

$status1 = "Pending";
$status2 = "Attended";
$query = $conn->prepare('SELECT * FROM members WHERE member_id=:mID AND status=:status1 OR status=:status2');
$query->execute(array(':mID' => $mID,':status1' => $status1, ':status2' => $status2));
if ($query->rowCount() > 0) {
   //start to create my table    
   while ($row = $query->fetch(PDO::FETCH_ASSOC)) {
   //create variable, loop through and fill the table etc
   }
}else{
   echo "something";
}

这将显示数据-但是,它甚至获得不特定于成员id(mid)的结果。也就是说其他成员的数据!
很明显,我遗漏了什么,或者我的查询有误,但我很难找到任何东西。。
谢谢你的帮助。

f5emj3cl

f5emj3cl1#

您需要查看数据库的运算符优先级。你这样做:

SELECT * FROM members WHERE member_id = :mID AND status = :status1 OR status = :status2;

最有可能的结果是:

SELECT * FROM members WHERE (member_id = :mID AND status = :status1) OR status = :status2;

但这不是你想要的,所以你必须像这样明确地使用paren:

SELECT * FROM members WHERE member_id = :mID AND (status = :status1 OR status = :status2);

或者,您可以使用 IN 所以没有 OR :

SELECT * FROM members WHERE member_id = :mID AND status IN (:status1, :status2);

相关问题