CodeIgniter - 内爆/查询绑定导致不需要的字符串

时间:2011-01-31 18:44:03

标签: mysql codeigniter

我在CodeIgniter中尝试更新时有以下查询:

$sql = "UPDATE fanout.manual_data
                SET call_leader_id = ?
                WHERE id IN (?)";

$q = $this->db->query($sql, array($leaderID, implode(", ", $empIDs)));

内爆是在我的数组中创建一个包含所有ID的字符串。但是,这导致查询看起来像:

UPDATE fanout.manual_data SET call_leader_id = '55993' WHERE id IN ('57232, 0097726, 0076034');

当我需要的是:

UPDATE fanout.manual_data SET call_leader_id = '55993' WHERE id IN (57232, 0097726, 0076034);

唯一不同的是,围绕ID字符串的单引号。这是我自己需要做的事情,并跳过CI的查询绑定(http://codeigniter.com/user_guide/database/queries.html),或CI是否可以处理,我只是错过了一步?

感谢。

1 个答案:

答案 0 :(得分:1)

我认为你不能跳过这种行为。你在技术上传递一个字符串,所以CI将其解释为这样,并简单地用引号括起来。

我认为你最好简单地手动连接$empIDs(例如使用foreach循环),用$this->db->escape()转义它们,以防你想确定。