0

post_ids の配列があります

$ids = array( 
    [0] => 32 
    [1] => 33 
    [2] => 21 
    [3] => 11 
    [4] => 13 
    [5] => 17 
    [6] => 41 
    [7] => 88 
    [8] => 92 
    [9] => 94 
    [10] => 96 
    [11] => 106 
    [12] => 117 
    [13] => 187 
    [14] => 220 
);

post_id が上記の配列の ID と一致するデータベース テーブルの列を取得したいと考えています。テーブルはこのように構成されています

post_id | meta_key | meta_value

現在、私はforeach ($ids as $id)var を 1 つずつクエリするために使用しています。これは、大規模なデータ セットでは非効率的です。$ids 配列で meta_value 列をクエリする方法はありますか?

4

1 に答える 1

0

これは最も効率的な方法ではありませんが、機能します

$idList = implode(",",$ids);

今あなたのクエリ

$query = "SELECT * FROM posts 
          WHERE post_id IN ($idList);";

少なくとも今では 1 つのクエリに削減されています

アップデート:

配列に入力するときに SQL インジェクションから保護するには、データベース入力が安全であることを確認してください。

// if you are populating your array this way here is the trick
$ids = array();
foreach ($inputValues as $value){
   $ids[] = (int) $value; // this makes sure your input is an integer
}
于 2012-08-15T22:37:04.593 に答える