2014-01-17 62 views
4

我使用Codeigniter v2.1.4在sqlite3數據庫中插入一些值。Codeigniter insert_batch錯誤

的問題是,當我嘗試插入一個批處理它給了我一個錯誤:

>[17-Jan-2014 22:44:17 UTC] PHP Fatal error: Call to a member function execute() on a >non-object in E:\Repository\cashy-support-app2\system\database\drivers\pdo\pdo_driver.php >on line 193 
>[17-Jan-2014 22:44:17 UTC] PHP Stack trace: 
>[17-Jan-2014 22:44:17 UTC] PHP 1. {main}() E:\Repository\cashy-support-app2\index.php:0 
>[17-Jan-2014 22:44:17 UTC] PHP 2. require_once() E:\Repository\cashy-support-app2\index.php:202 
>[17-Jan-2014 22:44:17 UTC] PHP 3. call_user_func_array() E:\Repository\cashy-support-app2\system\core\CodeIgniter.php:359 
>[17-Jan-2014 22:44:17 UTC] PHP 4. Main_controller->index() E:\Repository\cashy-support-app2\system\core\CodeIgniter.php:359 
>[17-Jan-2014 22:44:17 UTC] PHP 5. Favorites_Model->addToTemp() E:\Repository\cashy-support-app2\application\controllers\main_controller.php:7 
>[17-Jan-2014 22:44:17 UTC] PHP 6. CI_DB_driver->query() E:\Repository\cashy-support-app2\application\models\favorites_model.php:106 
>[17-Jan-2014 22:44:17 UTC] PHP 7. CI_DB_driver->simple_query() E:\Repository\cashy-support-app2\system\database\DB_driver.php:299 
>[17-Jan-2014 22:44:17 UTC] PHP 8. CI_DB_pdo_driver->_execute() E:\Repository\cashy-support-app2\system\database\DB_driver.php:453 

如果我只插入一行它工作正常。

這是有問題的查詢:

INSERT INTO temp (Date, Name) 
    Values("test","test2"),("test","test2"),("test","test2"); 

如果我用這個:

INSERT INTO temp (Date, Name) Values("test","test2"); 

它工作正常。

此外,如果我使用db->insert(tablename, values)它工作正常,但如果我使用db->insert_batch(tablename, array),我會得到上述相同的錯誤。

在一個單獨的sqlite瀏覽器中,我可以在同一個數據庫上執行上述查詢,而不會出現任何問題。

這裏是笨我的數據庫配置:

$active_group = "default"; 
$active_record = TRUE; 

$db['default']['hostname'] = 'sqlite:'.APPPATH.'db/Support_Mails.db'; 
$db['default']['username'] = ''; 
$db['default']['password'] = ''; 
$db['default']['database'] = '';//APPPATH.'db/Support_Mails.db'; 
$db['default']['dbdriver'] = 'pdo'; 
$db['default']['dbprefix'] = ''; 
$db['default']['pconnect'] = TRUE; 
$db['default']['db_debug'] = TRUE; 
$db['default']['cache_on'] = FALSE; 
$db['default']['cachedir'] = APPPATH.'cache'; 
$db['default']['char_set'] = 'utf8'; 
$db['default']['dbcollat'] = 'utf8_general_ci'; 
$db['default']['swap_pre'] = ''; 
$db['default']['autoinit'] = TRUE; 
$db['default']['stricton'] = FALSE; 

這是數據庫:

CREATE TABLE [temp] (
    [Date] [TEXT(255)], 
    [Name] [TEXT(255)], 
    [Mail] [TEXT(255)], 
    [Subject] [TEXT(255)], 
    [Conversation] [TEXT(255)], 
    [Language] [TEXT(255)], 
    [Body] [TEXT(30000)], 
    [ROWID] [TEXT(255)], 
    [TableName] [TEXT(255)], 
    [userid] [TEXT(255)]); 

使用的print_r(陣列)陣列後,看起來像這樣:

[18-Jan-2014 10:20:04 UTC] Array 
(
    [0] => Array 
     (
      [Date] => test 
      [Name] => test 
     ) 

    [1] => Array 
     (
      [Date] => test 
      [Name] => test 
     ) 
) 

任何想法爲什麼它這樣做? (不知怎的,我覺得是有問題的笨設置,而不是在查詢本身,因爲我使用的SQLite的瀏覽器在同一數據庫上相同的查詢和它的作品確定)

+0

請問你能否顯示你的數組內容? –

回答

0

我認爲這是因爲sqlite不支持這種查詢,不知道如果codeigniter處理這個問題或不。