2011-11-30 30 views
6

我想在最新版本的CodeIgniter中開始使用sqlite。在codeigniter中使用SQLite

我database.php中看起來是這樣的:

$active_group = 'default'; 
$active_record = TRUE; 

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

我創建了我的表產生並放入數據。

我想使用此代碼來收集數據:

$query = $ this-> db-> get ('Producers'); 


foreach ($ query-> result() as $ row) 
{ 
echo $ row-> name; 
} 

這給了我下面的錯誤:Fatal error: [] operator not supported for strings in/Applications/MAMP/htdocs/webites/api/public_html/system/database/DB_driver.php on line 1183

還是這個錯誤有時會:

A Database error occurred 

Error Number: 1 

SQL logic error or missing database 

SELECT * FROM (Producers) 

Filename:/Applications/MAMP/htdocs/webites/api/public_html/controllers/welcome.php 

Line Number: 23 

如何解決它?我無法將數據添加到任何一個,也有類似的錯誤

回答

1

從來沒有試圖用CI與SQLite,但我找到了一個可能的答案您的問題。嘗試在數據庫名稱前添加「sqlite:」,如:

$db ['default'] ['database'] = 'sqlite:'.APPPATH.'db/producers.sqlite'; 

Source

+0

$ DB [ '默認'] [ '數據庫'] = 'sqlite的:'。 APPPATH。 '分貝/ producers.sqlite';給我錯誤:FEL:SQLSTATE [HY000] [14]無法打開數據庫文件 – IVar

+0

不要忘記'$ db ['default'] ['dbdriver'] ='pdo';' –

2

我已經使用CI 2.1.0當有同樣的問題,發現以下修爲的致命錯誤:

在系統/數據庫/ DB_driver.php變化:

線1165

$message = $error; 

$message[] = $error; 

線1169

$message = (! is_array($error)) ? array(str_replace('%s', $swap, $LANG->line($error))) : $error; 

$message[] = (! is_array($error)) ? array(str_replace('%s', $swap, $LANG->line($error))) : $error; 

Source

1

爲了解決這個錯誤「致命錯誤:[]運營商不支持字符串」

我修改文件* DB_driver.php:1171 *

加入這一行:

$message = (array)$message; 
1

有2.1.0阻止它與SQLite數據庫工作中的錯誤。你需要有更新版本的CodeIgniter 2.1.1。

0

嘗試笨3X

$db['default'] = array(
     'dsn' => '', 
     'hostname' => 'sqlite:' . APPPATH . 'db/database.db', 
     'username' => '', 
     'password' => '', 
     'database' => '', 
     'dbdriver' => 'pdo', 
     'dbprefix' => '', 
     'pconnect' => FALSE, 
     'db_debug' => (ENVIRONMENT !== 'production'), 
     'cache_on' => FALSE, 
     'cachedir' => '', 
     'char_set' => 'utf8', 
     'dbcollat' => 'utf8_general_ci', 
     'swap_pre' => '', 
     'encrypt' => FALSE, 
     'compress' => FALSE, 
     'stricton' => FALSE, 
     'failover' => array(), 
     'save_queries' => TRUE 
    );