Codeigniter不返回任何sqlite3表的行

时间:2015-11-23 08:21:27

标签: php codeigniter pdo sqlite

我是CodeIgniter的初学者(或多或少1个月),我正在尝试使用sqlite3数据库,我很难过。我错过了什么?

我使用this thread来配置它,希望它不是导致此问题的原因。

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

$db['default']['hostname'] = 'sqlite:'.APPPATH.'db/******.s3db';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$db['default']['dbdriver'] = 'pdo';
$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;

这是我的模特:

<?php
class QuoteModel extends CI_Model {
    public function __construct() {
        parent::__construct();
        $this->load->database();
    }
    public function getQuote() {
        $query = $this->db->get('quote');
        return $query->row_array();
    }
}

将表名更改为不在数据库中的内容会产生错误,这使我认为与数据库的连接有效:

A Database Error Occurred
Error Number: HY000
no such table: unknown_table
SELECT * FROM unknown_table
Filename: C:\xampp\htdocs\*****\system\database\DB_driver.php
Line Number: 330

通过将table_name更改为数据库中的任何其他表,$this->db->last_query()看起来没问题并在我的SQLiteStudio中正确执行并返回了多行,但$query->num_rows()返回0。 / p>

没有错误,只有PHP日志中的警告可能与我的问题无关:

[22-Nov-2015 23:37:32 UTC] PHP Warning:  Module 'oci8' already loaded in Unknown on line 0

我使用XAMPP 1.8.3和PHP 5.5.15,PDO支持PDO驱动程序启用mysql,sqlite和PDO驱动程序用于SQLite 3.x SQLite库启用3.8.4.3,CodeIgniter 2.2在Windows 7 Prof SP1 64位。

请帮忙。

2 个答案:

答案 0 :(得分:0)

尝试

$db['default']['username'] = 'DATABASE USERNAME';

$db['default']['password'] = 'IF USER HAS A PASSWORD';

$db['default']['database'] = 'DATABASE NAME HERE';

$db['default']['dbdriver'] = 'sqlite';

答案 1 :(得分:0)

一位伟大的办公室伙伴建议在CodeIgniter 3中尝试。然后我很高兴。

在我的database.php中,用户名,密码和数据库名称都是空的:

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
    'dsn'   => '',
    'hostname' => 'sqlite:'.APPPATH.'db/******.s3db',
    '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
);

我正在使用CodeIgniter 3.0.3,截至此日期的框架的当前版本。