PHP配列をSQL IN演算子で使用するにはどうすればいいですか? [重複] 質問する

PHP配列をSQL IN演算子で使用するにはどうすればいいですか? [重複] 質問する

2 つの値を持つ配列があり、それを選択クエリの SQL IN 演算子で使用したいと考えています。

これが私のテーブルの構造です

id comp_id
1   2
2   3
3   1

$arr2つの値を持つ配列がありますArray ( [0] => 1 [1] => 2 )

comp_id 1 と comp_id 2 のレコードを取得したいので、次のクエリを作成しました。

SELECT * from table Where comp_id IN ($arr)

しかし、結果は返されません。

ベストアンサー1

単純な整数なので、単純にコンマで結合できます。

$sql = "SELECT * FROM table WHERE comp_id IN (" . implode(',', $arr) . ")";

文字列、特に信頼できない入力を扱う場合:

$sql = "SELECT * FROM table WHERE comp_id IN ('" 
     . implode("','", array_map('mysql_real_escape_string', $arr)) 
     . "')";

NULLこれは(空の文字列として保存されます)などの値には対応しておらず、数値の周囲に盲目的に引用符を追加します。これは、厳密なMySQLモード

mysql_real_escape_stringは、オリジナルの mysql ドライバー拡張からの関数です。mysqli などの新しいドライバーを使用する場合は、mysqli_real_escape_string代わりに を使用します。

ただし、信頼できない数値のみを扱いたい場合は、intvalまたはを使用してfloatval入力をサニタイズすることができます。

$sql = "SELECT * FROM table WHERE comp_id IN (" . implode(",", array_map('intval', $arr)) . ")";

おすすめ記事