【问题标题】:CodeIgniter: Unknown column xxx in ‘where clause’CodeIgniter:‘where 子句’中的未知列 xxx
【发布时间】:2009-10-31 15:55:02
【问题描述】:

我现在正在处理一个错误(?)几个小时,但无法修复它。

这是我的代码:

 if(!$this->db->get_where('merken',array('m_merken' => $brand))->count_all_results()){

      $insetData = array('m_name' => $brand);
      $this->db->insert('merken', $insetData);

 }

$brand 在此预览中包含“Acer”。

 A Database Error Occurred

    Error Number: 1054

    Unknown column ‘Acer’ in ‘where clause’

    SELECT * FROM (`merken`) WHERE `m_name` = Acer 

我想检查它是否已经存在,但它不会很好地工作。

【问题讨论】:

  • 我看到我的错字“m_merken”,必须是“m_name”,但仍然是一个错误。 ;-)

标签: activerecord codeigniter


【解决方案1】:

没有引号,你的陈述:

SELECT * FROM (`merken`) WHERE `m_name` = Acer

Acer 指的是列名。如果您的意图是字符串文字,请将其放在单引号中,如:

SELECT * FROM (`merken`) WHERE `m_name` = 'Acer'

此外,作为良好的编程习惯,避免SELECT *,最好使用SELECT 来返回您想要返回的每一列,即使列表很长。

-- 编辑--

我怀疑我错过了重点...... SQL 已生成。要检查两件事:

m_name 是否正确声明为 string/varchar/char 字段? 如果做不到这一点,请尝试将品牌名称设置为'Acer',并带有引号。不过,我怀疑这是一个合理的解决方案。

【讨论】:

  • m_name 被声明为 varchar(255),我也试过这个代码: if($this->db->get_where("merken",array("name" => ' $brand'))->count_all_results() == 0){ $insetData = array("name" => '$brand'); $this->db->insert("merken", $insetData);回声“成功”; }else{ echo "已经存在";但是当我尝试什么都没有返回时,所以有问题但不知道是什么。没有错误,也没有成功/存在。
  • if($this->db->get_where("merken",array("name" => $brand))->count_all_results() == 0){ $insetData = array("名称" => $品牌); $this->db->insert("merken", $insetData);回声“gelukt”; }else{ echo "bestaat al?"; }
  • 现在好像可以了,谢谢!单引号并将名称 m_name 更改为“名称”(在代码和数据库中)已经起作用。感谢您的宝贵时间!
猜你喜欢
  • 2020-09-14
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 1970-01-01
相关资源
最近更新 更多