簡體   English   中英

我搞砸了我的where子句嗎? 獲得意想不到的結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM