2014-11-24 149 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进行测试。