2014-11-24 152 views
0

我試圖通過codeigniter向數據庫中插入一些數據,但遇到一些奇怪的錯誤。有誰知道原因:Codeigniter數據庫插入 - 不與數組一起工作

我的插件組($ datainsert)是印刷時注意以下事項

Array ([online_name] => Discount Store 
     [online_nameKey] => d 
     [storeGroup_ID] => 
     [CJ_ID] => 123456 
     [online_tag] => Health and Medical 
     [online_businessType] => 0 
     [online_businessTypeSub] => 0 
     [online_homepage] => http://www.discountstore.com 
     [store_ChainID] => 
     [savingsdotcom_ID] => 0) 

嘗試打印我用刀片:導致

echo $DB1->_insert('stores_online', $datainsert); 

INSERT INTO stores_online (Discount Store, d, , 123456, Health and Medical, 0, 0, http://www.discountstore.com, , 0) VALUES() 

我不明白爲什麼它沒有正確使用數組鍵的第一個()和值。

+1

你會得到什麼「奇怪的錯誤」? – 2014-11-24 17:10:49

+0

有什麼錯誤? – 2014-11-24 17:14:24

+0

即使我將所有錯誤設置爲顯示並將其放入try/catch循環,它也只是輸出500 DB錯誤。但很明顯,insert語句格式不正確。 – user2694306 2014-11-24 17:42:38

回答

0

試試這個代碼

$datainsert=Array ([online_name] => Discount Store, 
        [online_nameKey] => d, 
        [storeGroup_ID] => something, 
        [CJ_ID] => 123456 , 
        [online_tag] => Health and Medical , 
        [online_businessType] => 0 , 
        [online_businessTypeSub] => 0 , 
        [online_homepage] => http://www.discountstore.com , 
        [store_ChainID] => , 
        [savingsdotcom_ID] => 0 
       ) ; 

$this->db->insert('stores_online', $datainsert); 
+0

這將無法正常工作,因爲它會嘗試插入從屬數據庫,這就是爲什麼我使用$ DB1指定主數據庫的原因。 – user2694306 2014-11-24 17:42:19

0

使用

$this->db->insert('stores_online', $datainsert); 

,而不是

echo $DB1->_insert('stores_online', $datainsert); 
+0

_insert打印生成的查詢以進行調試 – user2694306 2014-11-25 13:54:01

+0

如果您想檢查查詢,那麼您應該使用 - $ this-> db-> last_query(); – 2014-11-26 05:34:45

+0

由於程序在查詢中崩潰,我無法達到這一點。 – user2694306 2014-11-26 06:52:48

0

我知道這個問題是過了一年,但我有同樣的問題,我解決它通過以下方式手動創建查詢:

public function add($data) 
{ 
    $query = 'INSERT INTO myTable ('; 

    // (Column1, Column2, Column3, 
    foreach($data as $key => $column) 
     $query .= $key . ','; 

    // Removes the last comma 
    // Column3, == Column3) VALUES(
    $query .= rtrim($query, ',') . ') VALUES('; 

    // Value1, Value2, Value3, 
    foreach($data as $key => $column) 
     $query .= "'" . $column . "',"; 

    // Removes the last comma and closes the query 
    $query .= rtrim($query, ',') . ')'; 

    // Result: INSERT INTO (Column1, Column2, Column3) VALUES ('VALUE1', 'VALUE2', 'VALUE3') 
    return $query; 
} 
0

這需要做:

echo $DB1->_insert('stores_online', array_keys($datainsert), $datainsert);

附:這適用於CI 2.X,我沒有爲其他版本的CI進行測試。