【问题标题】:CodeIgniter - implode/query binding causing unwanted stringCodeIgniter - 内爆/查询绑定导致不需要的字符串
【发布时间】:2011-01-31 18:44:03
【问题描述】:

我有以下查询尝试在 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 可以处理而我只是错过了一步?

谢谢。

【问题讨论】:

  • 嘿@Ryan,你能告诉我你是如何发现变量在它周围加上单引号的吗?是否有一个 php 函数可以输出运行的 ACTUAL 查询?我有一个类似的问题,如果我能够知道单引号放在我的 var 周围,那将对我有很大帮助。

标签: mysql codeigniter


【解决方案1】:

我认为你不能跳过这种行为。从技术上讲,您传递的是一个字符串,因此 CI 将其解释为这样并简单地用引号括起来。

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

【讨论】:

  • 谢谢,我就是这么想的,但不确定。
猜你喜欢
  • 2011-01-11
  • 1970-01-01
  • 2014-01-18
  • 2017-08-21
  • 2018-08-03
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
相关资源
最近更新 更多