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。对于大型数据集,这是低效的。有没有办法通过 $ids 数组查询 meta_value 列?

4

1 回答 1

0

这不是最有效的方法,但它有效

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

现在您的查询

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

至少现在它减少到一个查询

更新:

要在填充数组时防止 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 回答