2009-10-31 114 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