0

少し複雑なクエリを使用します。BETWEEN と and があります。私が得たものは、データベースのすべての値を持つクエリです。フィールド classe = 'Vehicule' は認識されなくなり、穴テーブルの要素が選択されます。ここでは単純なコードを示します。

$query = "SELECT
publier.classe AS 'classe',
publier.sclasse AS 'sclasse',
publier.region AS 'region',
publier.sujet AS 'sujet',
publier.prix AS 'prix',
publier.details AS 'details',
publier.pdate AS 'pdate',
publier.ptime AS 'ptime',
publier.photo1 AS 'photo1',
publier.photo2 AS 'photo2',
publier.photo3 AS 'photo3',
publier.photo3 AS 'photo4',
publier.courriel AS 'courriel',
info.Ville AS 'Ville' ,
info.Nom AS 'Nom',
info.Prenom AS 'Prenom',
info.Telephone AS 'Telephone',
info.Courriel AS 'Courriel'
FROM 
publier LEFT JOIN info 
ON
publier.courriel = info.Courriel 
        WHERE classe = 'Vehicule' AND  
        (details LIKE \"%$trimmed%\") OR 
        (sujet  LIKE \"%$trimmed%\") AND 
        (pdate BETWEEN DATE_SUB(NOW(), INTERVAL 60 DAY) AND NOW()) AND 
        (prix BETWEEN '".$pmin."' AND '".$pmax."') 
ORDER BY prix ASC";
4

2 に答える 2

2

WHERE の条件がグループ化される方法に注意してください。

WHERE classe = 'Vehicule' AND  (details like \"%$trimmed%\")OR(sujet  like \"%$trimmed%\")  AND (pdate BETWEEN DATE_SUB(NOW(), INTERVAL 60 DAY) AND NOW()) AND (prix BETWEEN '".$pmin."' AND '".$pmax."')

この文章

WHERE A AND B OR C

と同じではありません

WHERE A AND (B OR C)

于 2013-02-01T00:07:45.727 に答える
2

変化する

 (details like \"%$trimmed%\")OR(sujet  like \"%$trimmed%\")

 (details like \"%$trimmed%\" OR sujet like \"%$trimmed%\")

ここではORが原因です。括弧の外側の前の条件がすべて false である可能性があり、それでも結果が返される場合です。

于 2013-02-01T00:09:01.107 に答える