我正在运行以下查询来搜索MySQL中的产品,它会显示所有内容但我需要它才能显示库存中超过0(至少1)的产品
$result=mysqli_query($datacenter,"
SELECT * FROM productos
WHERE codigo like '%$terminos%'
or sku like '%$terminos%'
or producto like '%$terminos%'
or marca like '%$terminos%'
or modelo like '%$terminos%'
AND cantidad > 0
ORDER BY `$orden`
$emplazamiento
limit $visualizar");
问题在于它甚至显示库存为0的那些......有什么想法吗?
答案 0 :(得分:1)
你应该将OR语句包装在这样的括号中:
$result=mysqli_query($datacenter,"
SELECT * FROM productos
WHERE (codigo like '%$terminos%'
or sku like '%$terminos%'
or producto like '%$terminos%'
or marca like '%$terminos%'
or modelo like '%$terminos%')
AND cantidad > 0
ORDER BY `$orden`
$emplazamiento
limit $visualizar");
如果不这样做,最后一个OR语句将被解释为单个表达式:
or modelo like '%$terminos%' AND cantidad > 0
答案 1 :(得分:0)
可能是因为您的查询中的AND和OR未正确排序。我总是对计算机读取AND和OR的顺序感到困惑,所以我总是使用()让计算机知道我真正想要做什么。
尝试将此作为查询:
SELECT * FROM productos
WHERE (codigo like '%$terminos%'
or sku like '%$terminos%'
or producto like '%$terminos%'
or marca like '%$terminos%'
or modelo like '%$terminos%')
AND cantidad > 0
ORDER BY `$orden`
$emplazamiento
limit $visualizar