1

$arr = array(1,2,3,4,5...)

... WHERE meta_id IN (1,2,3,4,5....) を使用して、mysql データを取得できます。

しかし、番号を $arr に置き換える方法は?

4

2 に答える 2

2

あなたが使用することができますJOIN

$array = array('1', '2', '3');
$arr_ID = join(',', $array);  
$sql = "SELECT * FROM tableName WHERE id IN ($arr_ID)";
于 2013-03-31T11:35:46.520 に答える
0

簡単な答え:

$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 を書いていないので、おそらく疑問符を作成するためのより良い方法があるでしょう (ただし、手動で文字列に追加するのはかなり醜いです)。

于 2013-03-31T11:37:20.043 に答える