0

我使用查询有点复杂。有BETWEEN and 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是这里的罪魁祸首,当括号外的所有前面的条件可能为假时,仍然会返回结果。

于 2013-02-01T00:09:01.107 回答