$arr = array(1,2,3,4,5...)
... WHERE meta_id IN (1,2,3,4,5....) を使用して、mysql データを取得できます。
しかし、番号を $arr に置き換える方法は?
あなたが使用することができますJOIN
$array = array('1', '2', '3');
$arr_ID = join(',', $array);
$sql = "SELECT * FROM tableName WHERE id IN ($arr_ID)";
簡単な答え:
$arr = array(1,2,3,4,5);
$string = implode(',', $arr);
$sql = sprintf('SELECT `foo` FROM `table` WHERE `meta_id` IN (%s)', $string);
より長い答え:
SQL インジェクションを避けるために、クエリでパラメーターを使用することを検討する必要があります。あなたの例では、「ハードコードされた」配列がありますが、IN
句で使用するユーザー入力がある場合...まあ、パラメーターを使用するのが最善の策です( php.net で見られるように):
$arr = array(1, 2, 3, 4, 5);
$questionMarkArray = array();
foreach($arr as $item) {
$questionMarkArray[] = '?';
}
$string = implode(',', $questionMarkArray);
$sql = sprintf('SELECT `foo` FROM `table` WHERE `meta_id` IN (%s)', $string);
$statement = $dbh->prepare($sql);
$statement->execute($arr);
$results = $statement->fetchAll();
そうすれば、SQL インジェクションなどの可能性を取り除くことができます。
また、私は実際には 1、2 年ほど php を書いていないので、おそらく疑問符を作成するためのより良い方法があるでしょう (ただし、手動で文字列に追加するのはかなり醜いです)。