【问题标题】:mysql select user defined value for not existing columnmysql为不存在的列选择用户定义的值
【发布时间】:2018-05-28 07:07:06
【问题描述】:

我希望能够将不存在的列名和列值添加到我的选择中。我正在使用 php pdo 代码点火器。

示例代码是:

$this->db->select('* ,code1 AS  `column` ');

当我在 phpmyadmin 中尝试时:

SELECT *,'code1' AS `column` from table

它可以工作,但在代码中却不行。当我查看开发工具时,我看到了

错误号:1054 '字段列表'SELECT *中的未知列'code1',code1 AS column FROM

获取#1054 - Unknown column '' in 'field list'

我尝试将@ 添加到列值中

如何在mysql select中添加用户将定义的列名列值

【问题讨论】:

  • 问题没有缺陷。仍然被否决。从我这边+1,因为我认为没有任何问题。

标签: php mysql codeigniter pdo


【解决方案1】:

尝试将 false 作为 select() 中的第二个参数传递

$this->db->select("* ,'code1' AS  `column` ",FALSE);

你当前生成的查询是这样的

select * from `code1` as `column`

查看在您的表中不存在的 code1 周围添加的反引号,如果它只是一个字符串值,则在它周围加上引号 'code1'

根据文档 $this->db->select() 接受可选的第二个参数。如果您将其设置为 FALSE,CodeIgniter 将不会尝试保护您的字段或表名。如果您需要一个复合选择语句,其中自动转义字段可能会破坏它们,这将非常有用。

【讨论】:

  • 如果我这样做 $this->db->select("* ,{$code} AS column` ",FALSE);` 其中$code 是一个我真正想要的变量,当它工作静态时仍然会出错
  • @guradio 查看我更新的答案,您需要将该值放在引号中,以便 mysql 将其视为字符串而不是列,对于您的情况,这应该可以工作 $this->db->select("* ,' ".$code." ' AS somecolumn ",FALSE);
  • 很高兴学习新事物column 我认为是保留我无法记住所有内容:) 你能在答案中添加column
  • @guradio ye 它是一个保留字为您的自定义列使用另一个名称
猜你喜欢
  • 2013-12-09
  • 1970-01-01
  • 2021-07-28
  • 1970-01-01
  • 2022-01-14
  • 2012-01-07
  • 2011-04-11
  • 2013-04-05
  • 2021-10-30
相关资源
最近更新 更多