配置存储在数据库中的数据

时间:2011-04-14 09:45:48

标签: database codeigniter config

我可能正在咆哮完全错误的树,所以请原谅我,如果这根本不是我应该做的事情。

我的数据库中有一个配置表,用于保存我网站的配置详细信息。我想将这些数据加载到config.php文件中以获取代码点火器?

这是我应该做的还是完全错的?

如果我在config.php文件的顶部放置一个数据库调用,那么每次有人加载网站或第一次调用时都会调用它吗?

对不起,如果这听起来很愚蠢,我有点困惑。

修改

我不是指数据库详细信息,例如想要存储类似每页显示的帖子数量的内容。我正在创建的脚本将在多个服务器上使用,例如,每页的帖子数量需要是可编辑的。我可以把它加载到会话中,但我想把它加载为常量*?在配置文件中将是一个更好的主意。

3 个答案:

答案 0 :(得分:10)

我是这样做的:

首先,我们的模型:

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

class Prefs extends CI_Model
{
    function __construct()
    {
        parent::__construct();      
        $pre = array();
        $CI = &get_instance();

        if ($this->config->item("useDatabaseConfig")) {
            $pr = $this->db->get("settings")->result();     
            foreach($pr as $p)
            {
                $pre[addslashes($p->key)] = addslashes($p->value);
            }       
        }
        else
        {
            $pre = (object) $CI->config->config;
        }   
        $CI->pref = (object) $pre;      
    } 
}
  • 自动加载此模型。
  • 在您的config / config.php中
  • ,添加此行(或其他自定义行,如果您使用的话):$config["useDatabaseConfig"] = true;

在您的数据库中,您需要一个带有“key”和“value”列的“设置”表。

多数民众赞成。使用此模型,您可以设置何时使用数据库,并且只要继续使用config / * .php文件。

说,您可以在调用此模型方法之前更改$config["useDatabaseConfig"]变量(然后,应禁用自动加载。)

我确实获得了CI实例的变量,只是因为它更容易和更好 阅读配置数据,如下所示:$this->pref->sess_cookie_name

答案 1 :(得分:7)

您可以创建一个新模型,从数据库中提取配置选项,然后自动加载此模型,以便全局可用。然后,您可以通过$this->model_name->function_name($db_column);访问您的选项,并将$db_column作为您要查找的选项的列名称,并让您的模型函数选择并返回列数据。

就个人而言,我使用自定义配置文件:
http://codeigniter.com/user_guide/libraries/config.html

答案 2 :(得分:0)

这是你不应该做的事情。每次请求完成时都会进行数据库调用,并且您无法将数据库凭据存储在数据库本身中。