私の PHP/MySQL サイトの 1 つで、すべてのユーザーがそのサイトの他のすべてのユーザーをブロックできます。これらのブロックはBlocked
テーブルに格納され、各行は誰がブロックしたか、誰がブロックのターゲットかを表しています。ユーザーの「ブロック リスト」全体をすばやく取得できるように、列にインデックスが付けられます。
ユーザーごとに、ブロック リストに表示されるユーザーを検索結果から除外する必要があります。
それを行うには、次のことをお勧めします。
1) ユーザーがログイン時に一度Blocked
テーブルをクエリして に保存することにより、ユーザーがログインするたびに「ブロック リスト」を生成します(また、「ブロック リスト」に変更を加えるたびに再クエリを実行し、 に再保存します) 。 、そしてそのようにクエリします:$_SESSION
$_SESSION
NOT IN ($commaSeparatedListFromSession)
また
2) 次のように、各ユーザーの検索クエリに対してサブクエリを使用して、ブロックされたユーザーをクエリで直接「リアルタイム」に除外します。
NOT IN (SELECT userid FROM Blocked WHERE Blocked.from = $currentUserID)
?