我有一组 ID,我正在从数据库中获取这些项目的详细信息。我创建了一个 foreach 循环来一个一个地获取每个项目,然后在返回控制器之前将其推送到数组。问题是查询构建器将所有 ID 组合在一个查询中。
public function get_product_by_ids($ids) {
$products = array();
foreach ($ids as $id) {
$this->db->where('product_id', $id);
$query = $this->db->get('products')->row_array();
array_push($products, $query);
}
return $products;
}
这是使用分析器的代码的结果。
我的身份证是
Array
(
[0] => 22
[1] => 18
[2] => 21
)
分析器生成的查询:
SELECT *
FROM `products`
WHERE `product_id` = '22'
AND `product_id` = '18'
AND `product_id` = '21'
AND `product_id` = '22'
SELECT *
FROM `products`
WHERE `product_id` = '18'
SELECT *
FROM `products`
WHERE `product_id` = '21'
输出:第一个是空的,然后我把第二个放到最后一个。
我尝试使用 where_in() 正如@danblack 所说,这是生成的查询:
SELECT *
FROM `products`
WHERE `product_id` = '22'
AND `product_id` = '18'
AND `product_id` = '21'
AND `product_id` IN('22', '18', '21')
这是我的新代码:
public function get_product_by_ids($ids) {
$this->db->where_in('product_id', $ids);
$query = $this->db->get('products')->result_array();
return $query;
}
输出:空数组。
繁花如伊