【问题标题】:Codeigniter Where clause not working with alias variableCodeigniter Where 子句不适用于别名变量
【发布时间】:2021-04-12 12:13:48
【问题描述】:

我正在尝试使用连接多个表的 SQL 来获得结果。 但是 where 子句不起作用...

$this->db->where('a.panel_id', 'r.id');

如果我打印查询,它将打印为

AND `a`.`panel_id` = 'r.id'

我需要对查询字符串进行转义,例如:

AND `a`.`panel_id` = `r`.`id`

如何实现?

【问题讨论】:

  • 连接不需要条件。你可以像这样使用连接 $this->db->join('second_table as r','a.panel_id=r.id')
  • where 不应该用于 join 的关联方式。

标签: php mysql codeigniter


【解决方案1】:

join 子句的正确方法如下:

$this->db->join('table2 r', 'a.panel_id = r.id');
$query = $this->db->get('table1 a');

无论如何,为了实现带有转义标识符的查询字符串,请使用 CI 函数 escape_identifiers() 并将 escape parameter in the where clause 设置为 false:

$c1=$this->db->escape_identifiers('a.panel_id');
$c2=$this->db->escape_identifiers('r.id');
$this->db->where($c1, $c2, false);

输出:

`a`.`panel_id` = `r`.`id`

【讨论】:

  • 如果它有助于解决您的问题,您可以通过单击该答案旁边的复选标记来接受该答案。你也可以投票,这取决于它对你有多大帮助。这是 Stackoverflow 表达 Thank You 的方式。另一方面,如果发布的答案不是您想要的,您可以使用问题正下方的编辑按钮向原始帖子 (OP) 添加更多详细信息,甚至对答案投反对票。
  • @Numan 如果不熟悉,请参见 stackoverflow.com/help/someone-answers
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
相关资源
最近更新 更多