シナリオ
この問題には 3 つの要素があります。1 つは、(1,3,5,6,8) の形式の ID の配列です。その配列は、表示したいユーザーの ID のリストです。2 番目の要素は、 id name surname emailのような単純なユーザー情報を含むテーブルです。3 番目の要素は、ユーザー構成を含む 2 番目のテーブルです。最後のテーブルには 2 つのパラメーターがあり、1 つはlidで、もう 1 つはusraction です(とりわけ重要なのはこれら 2 つです)。lid はパーミッション タイプを表し、usraction は値を表します。ユーザーが自分のデータを公開したい場合、そのテーブルには、lid=3およびusraction="accepted"の行が作成されます。、また、ユーザーがこの権限を変更するたびにアクションの日時を登録するため、変更するたびに新しい行が追加され、権限の実際の状態を取得するには、ユーザーの最後の行を取得する必要があります次のように usraction の値を確認します。
SELECT * FROM legallog WHERE uid = '.$user['id'].' AND lid = 3 ORDER BY ABS(`registration` - NOW()) LIMIT 1
次にphpで:
if($queryresult && $queryresult[0]['usraction']=='accepted') //display data
問題
シナリオ id では、一度に 1 人のユーザーによって設定されたアクセス許可の実際の状態を取得する方法を説明しましたが、問題は、1 つまたは 2 つの SQL 呼び出しで ID の配列を整理したいということです。4 人のユーザーのユーザー情報を出力したいとします。1 つの関数で (2,6,8,1) の形式で ID が返されますが、前に示したクエリを使用して、それらのユーザーは自分の情報を表示したくない場合があります。ユーザーごとに SQL サーバーを呼び出して、新しい配列を生成できます。承認するユーザーが 1 と 8 の場合、結果の配列は (8,1) になります。
100 人のユーザーの配列で 100 回の呼び出しを行いますが、これは望ましくありません。1 つまたは 2 つのクエリでこれを解決する方法はありますか?