0

これは更新フィールド用であり、重複を防ぐために、番号 AND キーワード -> OR キャンペーン名が存在することを確認しています。

このクエリは期待どおりに動作しません:

$STH = $DBH->prepare("
    SELECT * 
    FROM campaigns 
    WHERE number = :number AND keyword = :keyword
    OR name LIKE :name"
);

(number=number AND keyword=keyword) OR (name=name) - 互いに関連しない 2 つの異なるステートメントとして。それらを括弧で囲んでも、正しい結果が得られません。

何か助けはありますか?

4

2 に答える 2

4

LIKE =演算子のように機能しない場合は、% も必要です。

SELECT * FROM campaigns WHERE (number = :number AND keyword = :keyword) OR name LIKE %:name%"
于 2013-01-04T18:34:09.667 に答える
1

そのようにしてみてください

     $STH = $DBH->prepare("SELECT * 
                   FROM campaigns 
                   WHERE (number = :number AND keyword = :keyword)
                   OR name LIKE :name"
                   );
于 2013-01-04T18:31:28.637 に答える