我正在尝试获取状态正在等待或接受的给定成员的结果,执行以下操作:
$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";
}
Run Code Online (Sandbox Code Playgroud)
这会显示数据 - 但是,它甚至会获得不特定于成员标识(mID)的结果.其他成员的数据也是如此!
我显然遗漏了一些东西,或者我的查询错了但很难找到任何东西......
任何帮助赞赏.
您需要查看数据库的运算符优先级.你这样做:
SELECT * FROM members WHERE member_id = :mID AND status = :status1 OR status = :status2;
Run Code Online (Sandbox Code Playgroud)
最有可能的结果是:
SELECT * FROM members WHERE (member_id = :mID AND status = :status1) OR status = :status2;
Run Code Online (Sandbox Code Playgroud)
但那不是你想要的,所以你必须明确地使用这样的parens:
SELECT * FROM members WHERE member_id = :mID AND (status = :status1 OR status = :status2);
Run Code Online (Sandbox Code Playgroud)
或者,你可以使用,IN所以没有OR:
SELECT * FROM members WHERE member_id = :mID AND status IN (:status1, :status2);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
183 次 |
| 最近记录: |