1

我的 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。

4

7 回答 7

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');
于 2013-05-08T09:20:03.207 回答
0
$this->db->query($q, explode(',', $ids));

或者

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

活动记录文档:http ://ellislab.com/codeigniter/user-guide/database/active_record.html#select

于 2013-05-08T09:24:37.720 回答
0

用where_in试试这个

$ids = array(1,2,3,4);
$this->db->select('*');
$this->db->from('my_Table');
$this->db->where_in('id',$ids);
于 2013-05-08T09:22:32.517 回答
0

像这样使用 FIND_IN_SET

select * from table where FIND_IN_SET('$ids', id);
于 2013-05-08T09:25:00.390 回答
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);
于 2013-05-08T09:45:23.213 回答
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用于 codignitor

于 2013-05-08T09:19:36.590 回答
0
$q = "SELECT * FROM my_table WHERE id IN ?"
$ids = "1,2,3,4";
$this->db->query($q, explode(",", $ids));
于 2015-07-25T17:38:17.890 回答