繁体   English   中英

MySQL查询给出错误的数据

[英]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_nameproduct_brandtypeprice 现在,我有一个价格范围滑块,其中它仅适用于type ,而不适用于product_nameproduct_brand 例如。

当我滑动价格滑块并且其范围最大为200到500并选择type它会显示结果;如果type不在范围内,则会显示result not found 但是对于product_nameproduct_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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM