web-dev-qa-db-ja.com

MySQL PHP-SELECT WHERE id = array()?

可能性のある複製:
配列を使用したMySQLクエリ
配列をmysqlに渡す

私はPHPで配列を持っています:

$array = array(1, 4, 5, 7);

ご覧のとおり、さまざまな値の配列がありますが、idequalのいずれかと等しいかどうかをチェックするMYSQLステートメントを記述したいと思います。配列の値。たとえば、行のidが1の場合、4、5、および7で同じ行が返されます。配列の長さはプログラムの性質により異なるため、問題があるところ。私はちょうどできますか:

SELECT ...
  FROM ...
 WHERE id = '$array'

または、より良い方法がありますか?
不明な場合は、詳細をお問い合わせください。

37
user569322

INを使用します。

$sql = 'SELECT * 
          FROM `table` 
         WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';
103
alex

探しているのはIN()ステートメントです。これは、指定されたフィールドに1つ以上の値が含まれているかどうかをテストします。

SELECT * FROM `Table` WHERE `id` IN (1, 2, 3)

単純なループを使用して、$array変数を適切な形式に変更します。配列の値がフロントエンドから来る場合は、SQLインジェクションに注意してください。

28
Nathan Taylor

単にID IN ()構文を使用します:

$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";
16
Ben D

次のようにクエリを記述できます。

select * from table where id in (1, 4, 6, 7)

必要な数の値を追加できます。

1
Mosty Mostacho

SELECT WHERE id IN (item1, item2...)を実行できます。 PHP配列をループして、クエリ用の配列を作成します。

0
yoozer8

IN演算子を使用する必要があります。

$sql = 'SELECT FROM WHERE id IN (' . implode(",", $array) . ')';

MySQLでは、IN演算子を使用してリストで使用できる値の数に制限がある場合があります。

0
David Faber