可能性のある複製:
配列を使用したMySQLクエリ
配列をmysqlに渡す
私はPHPで配列を持っています:
$array = array(1, 4, 5, 7);
ご覧のとおり、さまざまな値の配列がありますが、id
がequalのいずれかと等しいかどうかをチェックするMYSQLステートメントを記述したいと思います。配列の値。たとえば、行のid
が1の場合、4、5、および7で同じ行が返されます。配列の長さはプログラムの性質により異なるため、問題があるところ。私はちょうどできますか:
SELECT ...
FROM ...
WHERE id = '$array'
または、より良い方法がありますか?
不明な場合は、詳細をお問い合わせください。
IN
を使用します。
$sql = 'SELECT *
FROM `table`
WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';
探しているのはIN()
ステートメントです。これは、指定されたフィールドに1つ以上の値が含まれているかどうかをテストします。
SELECT * FROM `Table` WHERE `id` IN (1, 2, 3)
単純なループを使用して、$array
変数を適切な形式に変更します。配列の値がフロントエンドから来る場合は、SQLインジェクションに注意してください。
単にID IN ()
構文を使用します:
$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";
次のようにクエリを記述できます。
select * from table where id in (1, 4, 6, 7)
必要な数の値を追加できます。
SELECT WHERE id IN (item1, item2...)
を実行できます。 PHP配列をループして、クエリ用の配列を作成します。
IN
演算子を使用する必要があります。
$sql = 'SELECT FROM WHERE id IN (' . implode(",", $array) . ')';
MySQLでは、IN
演算子を使用してリストで使用できる値の数に制限がある場合があります。