PHP/PDO Select from columns multiple conditions

PHP/PDO Select from columns multiple conditions

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

$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) 的结果。也意味着其他成员数据!

我显然遗漏了一些东西,或者我的查询有误但很难找到任何东西..

感谢任何帮助。

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

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;

但这不是您想要的,因此您必须像这样显式使用括号:

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);