2011-08-01 9 views
0

私は複数のユーザがいます。私は各ユーザーが自分のアイテムを検索できるようにする必要があり、他の人のアイテムは見ないようにする必要があります。このクエリによって、executerはまだdbaseのすべての項目を見ることができます。助けてください!mysql LIKEは一致しますが、ユーザ名でフィルタリングする必要があります

$ finditは、ユーザーが探しているスクリプトの前の変数です。 $ usernameはログイン後にセッションCookieで設定されます。別として

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

作るか、または単一の条件として作用し、どの、およびユーザ名が一致し、ユーザ名が一致する必要があるように:

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

ご参考までに、||の代わりにORを使用してください。 SQLで。 – Ariel

+1

ANDはSQLを含むほとんどの言語でORより高い優先順位を持ちます。編集:私は明確ではなかった。私は同じ「優先順位/優先順位」を意味します – gbn

+1

@gbnいいえ、下にリンクされているチャートを参照してください。 (またはここでもまた:http://dev.mysql.com/doc/refman/5.0/en/operator-precedence.html) – Shi

答えて

2

あなたがまたはグループにできるはずです。

+1

約束どおりに動作します。ありがとう! – Brad

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 = ...

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

のいずれかと一致しますブラケットは表示されません。 ANDは、ORより高いoperator precedenceを有する。

関連する問題