在codeigniter中自动加载数据库

时间:2015-09-08 18:32:14

标签: php codeigniter

我正在使用这个课程:

<?php
class Decrypt extends CI_Controller
{



    public function decrypt1($toDescrypt="")
    {
        $this->load->library('encrypt');
        $toDescrypt = urldecode($toDescrypt);
        $s=unserialize($this->encrypt->decode($toDescrypt));
        echo $s["username"];
    }
}
?>

我正在使用数据库的自动加载功能。我的配置文件:

$autoload['libraries'] = array('database','session');

但你可以看到我没有在decrypt1方法中使用数据库。即使我不使用数据库操作,codeigniter会连接到数据库吗?

1 个答案:

答案 0 :(得分:0)

这是CI DB_Driver类的一部分:

/**
 * Simple Query
 * This is a simplified version of the query() function.  Internally
 * we only use it when running transaction commands since they do
 * not require all the features of the main query() function.
 *
 * @access  public
 * @param   string  the sql query
 * @return  mixed
 */
function simple_query($sql)
{
    if ( ! $this->conn_id)
    {
        $this->initialize();
    }

    return $this->_execute($sql);
}

如您所见,数据库驱动程序未加载(因此连接到数据库服务器),直到第一个查询(DB_Driver::query()的行为几乎相同)。

另一点,如果在代码中较早的某处执行了一些数据库查询(例如,检查用户会话/活动),那么即使您没有对数据库执行任何查询,也已建立与数据库服务器的连接。你的decrypt1()方法。

UPD。确保在数据库配置中使用延迟加载(autoinit选项应为false)。