php - 取决于用户 ID

标签 php mysql sql where-clause sql-like

我一直在使用一个查询来检查用户从搜索字段输入的内容并获取相关数据。此查询使用多个点赞来检查各个字段(名称、引用、订单 ID 等)。

我注意到查询忽略了检查用户 ID 的位置,仅显示该用户的记录。相反,会带回所有用户的记录。这是当前的查询:

SELECT  ORDER_ID, ORDER_DATE, ORDER_TIME, ORDER_REF, ORDER_RECNAME 
FROM ORDERS 
WHERE USER_ID = '$userID' AND ORDER_ID LIKE '%$SearchData%' 
    OR ORDER_RECNAME LIKE '%$SearchData%' OR ORDER_REF LIKE '%$SearchData%' 
    OR ORDER_POSTCODE LIKE '%$SearchData%' 
GROUP BY ORDER_ID, ORDER_DATE, ORDER_TIME, ORDER_REF, ORDER_RECNAME

我是不是哪里出了问题?它正确使用了 Likes,但没有正确使用 WHERE USER_ID 部分。

最佳答案

您在不带括号的 where 条件中混合使用 andor 运算符,这会导致问题。封装由 or 连接的 like 运算符,将 user_id 限制应用于所有运算符。请记住,and 运算符的优先级高于 or!

USER_ID = '$userID' AND (ORDER_ID LIKE '%$SearchData%' 
OR ORDER_RECNAME LIKE '%$SearchData%' OR ORDER_REF LIKE '%$SearchData%' 
OR ORDER_POSTCODE LIKE '%$SearchData%') 

关于php - 取决于用户 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37206354/

相关文章:

javascript - PHP/Javascript 倒计时器脚本

php - 基于3张表的MySQL查询

javascript - 如何通过javascript将网站代码包含到iframe中?

mysql - 在我的表中设置主键有什么问题? "Equal or Remove Advice"

java - JPQL 选择具有实体 ID 的范围起始索引

mysql - COUNT和COUNT,GROUP BY先算

php - 如何从 zf2 骨架应用程序启动 REST 客户端

c# - 缓存 mysql 结果 C#

php - MySql 查询的分组输出

mysql - 如何按层次选择所有 parent ?