prepa-6ren">
gpt4 book ai didi

mysql - PHP/PDO 从列中选择多个条件

转载 作者:行者123 更新时间:2023-12-01 00:35:37 25 4
gpt4 key购买 nike

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

$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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com