xingis 发表于 2012-8-15 00:34:06

在codeigniter 2.1以上版本通过PDO使用sqlite3!

本帖最后由 xingis 于 2012-8-28 19:25 编辑

codeigniter从2.1版本开始支持pdo,使用pdo驱动支持sqlite3,只需在config/database.php改动2行既可!

$db['default']['hostname'] = 'sqlite:' . APPPATH . 'db/mydatabase.db';
$db['default']['dbdriver'] = 'pdo';

狂飙的蜗牛 发表于 2012-8-15 11:17:03

感谢 连接成功了
:victory:

跳墙的狗 发表于 2012-8-23 15:48:43

楼主请教你
$db['default']['hostname'] = 'sqlite:' . APPPATH . 'db/mydatabase.db';
$db['default']['dbdriver'] = 'pdo';
这个设置好了

可是在模型中如何使用sqllite和pdo查询啊?
能否简单写个模型查询方法啊?

跳墙的狗 发表于 2012-8-23 16:15:15

在config里面加了这两句
可是在模型里还是要 $dbh = new PDO($dsn, $user, $pass); 这样连接数据库啊
否则就出错
而且也不能用$this-db->query();这样来执行语句啊?
那config里面添加了有什么用呢?

xingis 发表于 2012-8-24 11:20:56

本帖最后由 xingis 于 2012-8-28 19:46 编辑

跳墙的狗 发表于 2012-8-23 15:48 static/image/common/back.gif
楼主请教你
$db['default']['hostname'] = 'sqlite:' . APPPATH . 'db/mydatabase.db';
$db['default']['db ...
在模型中直接使用AR查询!跟原来你在使用MySQL做数据库查询一样!

post model
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Post Model
*/
class post_model extends CI_Model {

      public function __construct()
      {
                parent::__construct();
      }

      /**
         * posts
         */
      function get_posts()
      {
                $this->db->from('posts');

                $query = $this->db->get();
               
                return $query->result();
      }

}

/* End of file: post_model.php */
/* Location: ./application/models/post_model.php */

post controller
<?php
if (! defined('BASEPATH')) exit('No direct script access');

class Posts extends CI_Controller
{

      function __construct()
      {
                parent::__construct();
                $this->load->model('post_model');
      }

      /**
   * posts
   */
      public function index()
      {
                $data['posts'] = $this->post_model->get_posts();
                $this->load->view('posts.html', $data);
      }


}

/* End of file Posts.php */
/* Location: ./application/controllers/Posts.php */

xingis 发表于 2012-8-28 19:35:25

本帖最后由 xingis 于 2012-8-28 19:38 编辑

跳墙的狗 发表于 2012-8-23 16:15 static/image/common/back.gif
在config里面加了这两句
可是在模型里还是要 $dbh = new PDO($dsn, $user, $pass); 这样连接数据库啊
否则 ...
models中无需再连接数据库!
你可以在config/autoload.php 55行修改:
$autoload['libraries'] = array('database');
如果你非得在models加载的话,你可以在构造函数里添加这一行:
$this->load->database();

love.zy 发表于 2013-3-2 12:04:18

               $active_group = 'default';
               $active_record = TRUE;
               $db['default']['hostname'] = 'localhost';
                $db['default']['username'] = '';
                $db['default']['password'] = '';
                $db['default']['database'] = 'sqlite:'.APPPATH.'database/lovezy.sqlite';
                $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;
        break;


Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in D:\php\phpBlog\phpsrc\system\database\drivers\pdo\pdo_driver.php on line 114

PDOException: could not find driver in D:\php\phpBlog\phpsrc\system\database\drivers\pdo\pdo_driver.php on line 114

报上面两个错误,请问是怎么回事呢?

BruceWolf 发表于 2013-5-3 15:56:26

love.zy 发表于 2013-3-2 12:04 static/image/common/back.gif
$active_group = 'default';
               $active_record = TRUE;
               $db['default']['hostname'] = 'localhost'; ...

刚好也遇到这个问题,挖了一下 v2.1.3 的代码。
system/database/drivers/pdo/pdo_drivers.php 里有一行empty($this->database) OR $this->hostname .= ';dbname='.$this->database;把配置里的 hostname 设置成 'sqlite:balabala.sqlite',database 设置成 '' 就行了。
考虑到代码的兼容性,可以自己加版本判断 version_compare() 。

gaby19 发表于 2014-7-29 10:31:49

Fatal error: Call to a member function rowCount() on a non-object in C:\AppServ\www\CodeIgniter\system\database\drivers\pdo\pdo_result.php on line 42

这是什么原因
页: [1]
查看完整版本: 在codeigniter 2.1以上版本通过PDO使用sqlite3!