进行CodeIgniter数据库查询

问题描述 投票:0回答:3

有人可以帮助我使用 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(); 

请帮忙。

php sql codeigniter activerecord
3个回答
1
投票

试试这个(未经测试)

$query = $this->db->from('product')
                  ->where_in('price', implode(',',$prices))
                  ->get();

CodeIgniter Active Record 文档非常好,所以你绝对应该阅读它。例如,您会注意到 select()

 方法是不必要的,因为我们需要所有项目,因此假定为 
*


0
投票
试试这个

return $this->db->query("select * from product where price IN ('". implode(',',$prices)->result()."' )");
    

0
投票
当使用占位符执行 WHERE IN

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();


要享受标准化引用/转义,请使用 CodeIgniter 的查询构建方法。

return $this->db->where_in('price', $prices)->get('product')->result();
    
© www.soinside.com 2019 - 2024. All rights reserved.