1
$code = Array(1,2,3,4)
$sql = "SELECT * FROM Table1 WHERE Field1 IN (?)";
$query = $this->db->query($sql, array($code));

$this->db->last_query()将会呈现

"SELECT * FROM Table1 WHERE Field1 IN ('1,2,3,4')"

如何删除 IN 条件中的单引号?

即使$code是字符串数组,例如

$code = Array('This one', 'Next code', 'And this')

声明将是:

"SELECT * FROM Table1 WHERE Field1 IN ('This one, Next Code, And This')"

我错过了什么吗?

TIA。

4

2 回答 2

3

您可以使用这种简单而替代的方式

$this->db->where_in('Field1',$code);
$this->db->get('Table1');
于 2013-05-02T09:33:01.587 回答
1

来自codeigniter活动记录手册

$this->db->where() 接受可选的第三个参数。如果您将其设置为 FALSE,CodeIgniter 将不会尝试使用反引号保护您的字段或表名。

$this->db->where('MATCH (field) AGAINST ("value")', NULL, FALSE);

因此,将第三个参数放在带有 FALSE 的 where 子句上

那么你的查询应该是

 $this->db->select('*')
          ->where('Field1 IN('.$code.'),NULL,FALSE)
          ->get('Table1');
于 2013-05-02T09:34:31.567 回答