6
回答
CodeIgniter3 连接sqlite3问题
我的数据库配置
PHP复制代码
 
$db['sqlite_db'] = array(
        'dsn'   => '',
        'hostname' => '',
        'username' => '',
        'password' => '',
        'database' => realpath("./sqlite.db"),
        'dbdriver' => 'sqlite',
        'dbprefix' => '',
        'pconnect' => FALSE,
        'db_debug' => TRUE,
        'cache_on' => FALSE,
        'cachedir' => '',
        'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
        'swap_pre' => '',
        'encrypt' => FALSE,
        'compress' => FALSE,
        'stricton' => FALSE,
        'failover' => array(),
        'save_queries' => TRUE
);
 
 
复制代码


C
PHP复制代码
 
                $dbA = $this->load->database('sqlite_db', TRUE);
                
                $a=$dbA->query("select * from user");
                
                print_r($db);
 
 
复制代码


报错: Call to undefined function sqlite_open() in


网上查的时候看到有可能是php配置问题。我的phpinfo:


PDO
PDO support
enabled
PDO drivers mysql, sqlite


pdo_sqlite
PDO Driver for SQLite 3.x
enabled
SQLite Library 3.7.7.1


sqlite3
SQLite3 support
enabled
SQLite3 module version 0.7
SQLite Library 3.7.7.1

Directive
Local Value
Master Value
sqlite3.extension_dir no value no value



各位老师多帮忙~  谢谢
举报
rihgtzhao
发帖于2年前 6回/1K+阅
共有6个答案 最后回答: 2年前
需要使用时,数据库驱动用sqlite3,如下
$db['default']['dbdriver'] = "sqlite3"; 
数据库设置需要加入“sqlite:”前缀,如下:
$db['default']['database'] = 'sqlite:'.realpath('./system/application/models/database/myweb.sdb'); 
接下来就是正常的使用。
需要使用时,数据库驱动用sqlite3,如下

$db['default']['dbdriver'] = "sqlite3";  

数据库设置需要加入“sqlite:”前缀,如下:

 $db['default']['database'] = 'sqlite:'.realpath('./system/application/models/database/myweb.sdb');  

接下来就是正常的使用。

php 高一点的版本不支持sqlite。

sqlite_open (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

你使用sqlite3版本的函数吧。  'dbdriver' => 'sqlite3',

引用来自“mickelfeng”的评论

php 高一点的版本不支持sqlite。

sqlite_open (PHP 5 < 5.4.0, PECL sqlite >= 1.0.0)

你使用sqlite3版本的函数吧。  'dbdriver' => 'sqlite3',
 换成sqlite2,仍然是报这个错。那是我php版本太高了?

引用来自“mickelfeng”的评论

sqlite3 ,重启webserver

换成sqlite2 ,使用php5.4以前的版本就没问题了。

如果还用sqlite3 ci会报

Message: sqlite_open() [function.sqlite-open]: file is encrypted or is not a database

Filename: sqlite/sqlite_driver.php

Line Number: 84




引用来自“mickelfeng”的评论

需要使用时,数据库驱动用sqlite3,如下
$db['default']['dbdriver'] = "sqlite3"; 
数据库设置需要加入“sqlite:”前缀,如下:
$db['default']['database'] = 'sqlite:'.realpath('./system/application/models/database/myweb.sdb'); 
接下来就是正常的使用。
需要使用时,数据库驱动用sqlite3,如下

$db['default']['dbdriver'] = "sqlite3";  

数据库设置需要加入“sqlite:”前缀,如下:

 $db['default']['database'] = 'sqlite:'.realpath('./system/application/models/database/myweb.sdb');  

接下来就是正常的使用。

谢谢大神,成功了。但是前面不能加“sqlite:”前缀,否则报:

Unable to connect to your database server using the provided settings.

顶部