[英]Mysql query gives wrong data
select * from stock where product_name like '".$searchType."%' or product_brand like '".$searchType."%' or type like '".$searchType."%' and (price between ".$min_price." and ".$max_price.") group by product_name
我有一个名称为stock
表,其中的列product_name
, product_brand
, type
和price
。 现在,我有一个价格范围滑块,其中它仅适用于type
,而不适用于product_name
和product_brand
。 例如。
当我滑动价格滑块并且其范围最大为200到500并选择type
它会显示结果;如果type
不在范围内,则会显示result not found
。 但是对于product_name
和product_brand
无论价格是否在价格范围内,它始终会显示数据。
那么,如何解决此问题? 请帮我。
You你
您将需要在SELECT中对OR条件进行分组,否则,一旦匹配,它将停止检查任何其他条件...
select *
from stock where ( product_name like '".$searchType."%' or
product_brand like '".$searchType."%' or
type like '".$searchType."%') and
(price between ".$min_price." and ".$max_price.")
group by product_name
您还应该研究准备好的语句,因为这可以解决其他各种问题(包括SQL注入和搜索词中的流氓引号)。
您创建的查询具有多个循环。 这就是为什么结果超载的原因。 我无法提供确切的解决方案,因为数据库不在我身边。 但是,请尝试使用左连接并减少循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.