2009-10-31 62 views
1

我正在研究几个小时的bug(?),但没有解决它。CodeIgniter:'where子句'中的xxx列未知

这是我的代码:

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

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

} 

$品牌包含了“宏碁在此预览。

A Database Error Occurred 

    Error Number: 1054 

    Unknown column ‘Acer’ in ‘where clause’ 

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

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

+0

我看到我的错字'm_merken',必须是'm_name',但仍然是错误。 ;-) – Kees 2009-10-31 15:56:59

回答

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',并带有引号。不过,我怀疑这是一个合理的解决方案。

+0

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“already exists”; } 但是,当我尝试没有任何回报,所以有什么问题,但不知道什么。没有错误,也没有成功/存在。 – Kees 2009-10-31 16:28:48

+0

if($ this-> db-> get_where(“merken”,array(“name”=> $ brand)) - > count_all_results()== 0){ $ insetData = array(“name”=> $牌); $ this-> db-> insert(“merken”,$ insetData); echo“gelukt”; } else { echo“bestaat al?”; } – Kees 2009-10-31 16:30:37

+0

这似乎现在工作,谢谢!单引号并将名称m_name更改为“name”(在代码和数据库中)已工作。 感谢您的时间! – Kees 2009-10-31 16:40:39