2011-11-30 26 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 
    );