有人可以帮助我使用 Codeigniter Active record 完成此查询吗?:
我有一个包含两个值的 int 数组:
$prices = array(
[0] => 23,
[1] => 98
);
how i can make something like :
return $this->db->query("select * from product where price IN (?)", array(implode(',',$prices))->result();
请帮忙。
试试这个(未经测试)
$query = $this->db->from('product')
->where_in('price', implode(',',$prices))
->get();
CodeIgniter Active Record 文档非常好,所以你绝对应该阅读它。例如,您会注意到 select()
方法是不必要的,因为我们需要所有项目,因此假定为
*
。
return $this->db->query("select * from product where price IN ('". implode(',',$prices)->result()."' )");
query()
调用时,CodeIgniter 不需要
IN
之后的括号。第二个参数需要一个数组,其中每个元素按顺序与每个占位符相关。 将您的
$prices
数组(不变)作为参数数组的第一个/唯一元素传递。
return $this->db->query('SELECT * FROM product WHERE price IN ?', [$prices])->result();
您不得内爆您的数组——这将呈现一个无效的 SQL 字符串,其中 IN 后跟不带括号的字符串值。
return $this->db->query(
'SELECT * FROM product WHERE active = ? AND price IN ?',
[$active, $prices]
)->result();
return $this->db->where_in('price', $prices)->get('product')->result();