CodeIgniter - 查询绑定“IN”参数

时间:2013-05-08 09:14:15

标签: php sql codeigniter

我的CodeIgniter中有以下查询,我正试图通过参数绑定。

$q = "SELECT * FROM my_table WHERE id IN (?)"
$ids = "1,2,3,4";
$this->db->query($q, array($ids));

上面不起作用,因为查询绑定将$ ids视为字符串。如何参数化我的查询,但仍能进行“IN”操作?

修改

抱歉,我必须使用“原始SQL查询”。上面的查询只是一个更大的+复杂查询的一部分,我无法使用ActiveRecord。我也在使用Postgres。

7 个答案:

答案 0 :(得分:2)

而不是将字符串放在数组

$q = "SELECT * FROM my_table WHERE id IN (?)"
$ids =  array(1,2,3,4);
$this->db->query($q, $ids);

你可以在没有绑定的情况下实现同样的目标

替代

$ids =  array(1,2,3,4);
$this->db->where_in('id',$ids);
$this->db->get('my_table');

答案 1 :(得分:0)

试试这段代码:

$ids = "('1','2','3','4')";
$q = "SELECT * FROM my_table WHERE id IN ".$ids;
$this->db->query($q);

你应该使用

$ids = array('1','2','3','4');
$this->db->where_in('id', $ids);

where_in用于编码。

答案 2 :(得分:0)

使用where_in

尝试此操作
$ids = array(1,2,3,4);
$this->db->select('*');
$this->db->from('my_Table');
$this->db->where_in('id',$ids);

答案 3 :(得分:0)

$this->db->query($q, explode(',', $ids));

$this->db->where_in('id', explode(',', $ids))->get('my_table');

Active Records文档:http://ellislab.com/codeigniter/user-guide/database/active_record.html#select

答案 4 :(得分:0)

像这样使用FIND_IN_SET

select * from table where FIND_IN_SET('$ids', id);

答案 5 :(得分:0)

点是

$ids = "1,2,3,4";
$a = array($ids);
//$a[0] = "1,2,3,4";

//not  $a[0]=1;$a[1]=2;$a[2]=3;$a[3]=4;

想要保持你的风格

 $ids = "1,2,3,4";
$a = explode(",",$ids);

答案 6 :(得分:0)

$q = "SELECT * FROM my_table WHERE id IN ?"
$ids = "1,2,3,4";
$this->db->query($q, explode(",", $ids));