【发布时间】:2014-05-21 10:21:15
【问题描述】:
每当我在我的模型中像这样查询我的数据库(sqlite)时(我使用 codeigniter,下面的完整代码):
$this->db->select('post');
$query = $this->db->get('posts');
return $query->result_array();
我收到以下错误:
Fatal error: Call to a member function rowCount() on a non-object in /codeigniter/system/database/drivers/pdo/pdo_result.php on line 42
将查询更改为不存在的内容时,我收到“正确”错误,例如:
A Database Error Occurred
Error Number: HY000
no such column: posst
SELECT posst FROM posts
Filename: /codeigniter/models/post.php
Line Number: 8
这让我相信数据库确实在工作,但我缺少一些东西。 我已经尝试重新创建数据库。它实际上有 1 个包含 1 列的表,但我无法获取任何数据。我还尝试使用不同的“管理”程序创建它,但无济于事。我确定它是一个 Sqlite 3 db,根据 phpinfo 由网络服务器支持。 有人知道我在哪里犯了错误吗?
-------- 完整代码: 我在models/post.php中的帖子模型
<?php
class Post extends CI_Model{
function get_posts(){
$this->db->select('posst');
$query = $this->db->get('posts');
return $query->result_array();
}
}
我在 controller/posts.php 中的控制器:
<?php
class Posts extends CI_Controller{
function index(){
$this->load->model('post');
$data['posts']=$this->post->get_posts();
echo"<pre>";
print_r($data['posts']);
echo"</pre>";
}
}
我在 database.php 中的数据库配置:
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'sqlite:/home/******/******/www/wtp3/codeigniter/db/wtp35.sqlite';
$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;
【问题讨论】:
-
请提供完整代码。
-
ok 添加所有相关代码
-
你使用的是最新的 CodeIgniter 吗?
-
是的,我从 github 克隆了 2.1 稳定版
-
在
database.php,尝试将dbdriver从pdo更改为sqlite
标签: php sql codeigniter sqlite