Codeigniter不返回任何sqlite3表的行


Codeigniter returns no rows of any sqlite3 table

我是CodeIgniter的初学者(大约1个月),我正试图让它与sqlite3数据库一起工作,但我被难住了。我错过了什么?

我用这个线程来配置它,希望它不是这个问题的原因。

$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。

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 Library启用3.8.4.3,CodeIgniter 2.2在Windows 7 Prof SP1 64位中。

请帮忙。

尝试

$db['default']['username'] = 'DATABASE USERNAME';
$db['default']['password'] = 'IF USER HAS A PASSWORD';
$db['default']['database'] = 'DATABASE NAME HERE';
$db['default']['dbdriver'] = 'sqlite';

您的数据库名称为空。我认为这是错误的。

交叉检查

function test()
{
    $CI =& get_instance();
    $CI->load->database();
    print_r($CI->db);
}

上面的代码将打印您在database.php中设置的所有变量。

同时尝试设置数据库名称。

一位出色的办公室伙伴建议在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
);

我使用的是CodeIgniter3.0.3,这是截至目前为止该框架的当前版本。