0

我在使用 dbutil 和 db 时遇到问题。下面是我的代码(我的模型的构造函数):

public function __construct(){
    // I save my database configuration in CI session
    $this->load->library('session');
    $config = $this->session->userdata("db_config");
    if($config){ // $config is now equal contains of my database configuration
        $this->db = $this->load->database($config, TRUE);
    }else{
        $this->db = $this->load->database();
    }       
    $this->load->dbutil();
    echo '<pre>'.print_r($this->db, TRUE).'</pre>';
    echo '<pre>'.print_r($this->dbutil, TRUE).'</pre>';
}

我发现 $this->db 和 $this->dbutil 指向不同的数据库。

$this->db 指向会话中的数据库配置:

....
[username] => root
[password] => toor
[hostname] => localhost
[database] => coba
....

虽然 $this->dbutil 从我的配置文件(application/config/database.php)指向数据库配置:

....
[username] => root
[password] => toor
[hostname] => localhost
[database] => module_devel
....

这不是预期的,因为我希望 $this->db 和 $this->dbutil 都指向同一个数据库

我还检查了 PHP: CodeIgniter; 管理两个数据库连接;可变数据库参数。但是,对我来说,解决方案根本不起作用。

那么,任何人都可以发现这里有什么问题吗?

4

1 回答 1

0

看来是 CodeIgniter 的一个 bug。但是,dbutil 并不是我们唯一可以使用的。有许多替代方法可以模拟 dbutil 的功能。

就我而言,我想生成一个“创建表”脚本。我最终使用

 $query = $this->db->query("SHOW CREATE TABLE `$table_name`");

为了生成 SQL 插入脚本,我手动选择、遍历记录并生成脚本。

希望这可以帮助其他有类似问题的人

于 2012-08-18T14:01:19.793 回答