1
$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 句の記述が間違っていますか?

4

2 に答える 2

4

はい、クエリが間違っています

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ます。

于 2013-10-15T19:42:13.557 に答える
3

正しい書き方は次のとおりです。

SELECT * FROM user_campaign 
WHERE status IN ('blasting', 'ready', 'followup_hold', 'initial_hold')
AND uid =: uid 
ORDER BY status ASC

INその膨大な量の s の代わりに使用する必要がありますOR:)

于 2013-10-15T19:44:42.217 に答える