我一直在使用一个查询来检查用户从搜索字段输入的内容并获取相关数据。此查询使用多个点赞来检查各个字段(名称、引用、订单 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 条件中混合使用 and
和 or
运算符,这会导致问题。封装由 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/