mysql LIKE匹配,但需要按用户名过滤

时间:2011-08-01 00:02:38

标签: php mysql

我有几个有项目的用户。我需要每个用户都能够搜索他们的项目,而不是看到其他人的项目。此查询仍允许执行者查看dbase中的每个项目。请帮忙!

$ findit是脚本中早期的变量,是用户正在寻找的变量。 $ username在登录后通过会话cookie设置。

$result = mysql_query( "SELECT * FROM prices WHERE 
            itemnum LIKE '%$findit%' ||
            itemdesc LIKE '%$findit%' AND username = '$username' ORDER BY price");

3 个答案:

答案 0 :(得分:2)

您应该能够对OR进行分组:

SELECT * 
FROM prices 
WHERE (itemnum LIKE '%$findit%'
   OR  itemdesc LIKE '%$findit%')
  AND username = '$username'
ORDER BY price

这将使OR作为单个条件,并且用户名匹配为另一个,因此需要匹配用户名。

答案 1 :(得分:0)

$result = mysql_query( "SELECT * FROM prices WHERE 
        (itemnum LIKE '%$findit%' OR itemdesc LIKE '%$findit%')
        AND username = '$username' ORDER BY price");

注意括号。如果它们不存在,则会匹配itemnum LIKE ... itemdesc LIKE ... and username = ...

答案 2 :(得分:0)

$result = mysql_query( "SELECT * FROM prices WHERE 
        (itemnum LIKE '%$findit%' ||
        itemdesc LIKE '%$findit%') AND username = '$username' ORDER BY price");

缺少括号。 AND的{​​{3}}高于OR