PDO从列中选择多个条件

PDO从列中选择多个条件

我正在尝试通过以下方式获取状态为待定或被接受的给定成员的结果:

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

关于mysql - PHP/PDO从列中选择多个条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51641297/

10-12 12:29