我的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。答案 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));