[英]Did I mess up my where clause? Getting unexpected results
$active_sth = $dbh->prepare("SELECT * FROM user_campaign
WHERE status='blasting'
OR status='ready'
OR status='followup_hold'
OR status='initial_hold'
AND uid=:uid
ORDER BY status ASC");
$active_sth->bindParam(':uid', $_SESSION['uid']['id']);
$active_sth->execute();
我肯定$ _SESSION ['uid'] ['id'] = 7,但它也會提取ID 10或任何其他數字的結果。
我的AND / OR子句寫錯了嗎?
是的,查詢錯誤
SELECT * FROM user_campaign
WHERE (
status='blasting'
OR status='ready'
OR status='followup_hold'
OR status='initial_hold'
)
AND uid=:uid
ORDER BY status ASC
您必須對所有OR
進行分組,以確保該行獲得此值之一,並單獨檢查其是否已提供uid
。
正確的寫法是:
SELECT * FROM user_campaign
WHERE status IN ('blasting', 'ready', 'followup_hold', 'initial_hold')
AND uid =: uid
ORDER BY status ASC
您應該使用IN
而不是大量的OR
:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.