2017-03-09 6 views
1

データベースからのドロップダウンを設定するには、このような単純なクエリを使用します。AND条件(配列から)

SELECT * 
FROM admin_users 
LEFT JOIN account ON account_id = user_account_id 
AND user_active = 1 

今、私はドロップダウンで「地域」へのアクセス権を持つユーザーのみを持っているにオプションを指定してリストを移入する

エリアIDがデータベースで連載され、私は

$bar = unserialize(base64_decode($user_areas)); 
を使用する配列を取得することが好きです

今、私は開いているページには、ユーザーだけがエリアにアクセスできるよりもドロップダウンがあるようなものです。ユーザーをクエリから直接フィルタリングする方法はありますか?

あなたはこのようなIDを持つインライン文字列を、得るためにあなたの配列$バーを「内破」する必要が
SELECT * 
FROM admin_users 
LEFT JOIN account ON account_id = user_account_id 

>>>>> WHERE area_id IN ($foo) <<<< 

AND user_active = 1 
+0

あなたは – user1504222

+0

ではなく、PHPのSQLの質問であることがことは想定されていない前に、ユーザーのリストを取得する必要がありますか?ここには必ずしもいないでしょうか? – maximedubois

答えて

0

$bar = array(7, 9, 27, 44); // These numbers are Area IDs 

その後implode()機能をインライン文字列を取得:

$ inline = implode($ bar、 '、')

最後に、クエリを連結します。

select ... 
>>>>> WHERE area_id IN ($inline) <<<< 
+0

小さなボビーテーブルに出会いたくない場合は、エスケープを無視しないでください。 – CBroe

0

subqueriesを使用して:

SELECT * 
FROM admin_users 
LEFT JOIN account ON account_id = user_account_id 
WHERE area_id IN (
    SELECT aria_id from `user_area_table` [where clause if needed] 
) 
AND user_active = 1