私があなたの質問を正しく理解していれば、ID番号のコンマ区切りの文字列を扱っているのであれば、おそらくこの形式でそれらを保持するのが最も簡単でしょう。その理由は、データベースにクエリを実行するときにSQLステートメントで使用できるためです。
SELECT
IDが入力されたユーザーを取得するためにクエリを実行したいとしますが、正しいですか?SELECT ... WHERE IN ...
次のようなタイプのステートメントを使用する必要があります。
// Get the ids the user submitted
$ids = $_POST['ids'];
// perform some sanitizing of $ids here to make sure
// you're not vulnerable to an SQL injection
$sql = "SELECT * FROM users WHERE ID IN ($ids)";
// execute your SQL statement
または、を使用explode
して個々のIDの配列を作成し、ループして、各値をチェックして正しいことを確認してから、ステートメントimplode
で使用できる文字列に連結して戻すこともできます。SELECT ... WHERE IN ...
。
編集:申し訳ありませんが、追加するのを忘れました:データベースにユーザーIDのリストを保存するという点で、メッセージIDに対して文字列としてコンマ区切りリストを保存することを検討できますが、欠点があります(他のテーブルでJOINSを実行するのは困難です)必要に応じて)。または、ルックアップタイプのテーブルを作成することをお勧めします。このテーブルは、基本的に2つの列で構成されます:messageid
、userid
。次に、各個人を例userid
に対して保存できます。messageid
messageid | userid
1 | 1
1 | 3
1 | 5
このアプローチの利点は、このテーブルを使用して他のテーブルを結合できることです(message
メッセージ自体の詳細を格納する別のテーブルがある場合があります)。
このメソッドでは、メッセージテーブルに新しいエントリを作成し、IDを取得してから、userids文字列を個別の部分に分解し、最後にINSERT
、個々のIDとメッセージIDを使用してデータを挿入するステートメントを作成します。メッセージのユーザーIDのリストの編集、および削除を処理するには、他のメカニズムを検討する必要があります。
それが理にかなっていることを願っています!