许多 BETWEEN 和 AND 错误地回答 mysql


Many BETWEEN and AND wrong answer mysql

我使用查询有点复杂。有 BETWEEN 和 和。我选择的是具有数据库所有值的查询。字段类 = '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";

注意 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)

等。

更改

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

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

OR是这里的罪魁祸首,当括号外的所有上述条件都可能为假时,结果仍将返回。