2011-04-14 58 views
5

我可能会完全错误地咆哮,如果这不是我应该做的事情,请原谅我。存储在数据库中的配置数据

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

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

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

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

编辑

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

回答

7

您可以创建一个从数据库中拉的配置选项,然后自动加载这个模型,以便它在全球上市的新模式。然后,你可以通过$this->model_name->function_name($db_column);访问您的选项,并有$db_column是该选项的栏,你正在寻找的名字和你的模型功能选择并返回列数据。

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

+0

我会研究它,谢谢! – flyersun 2011-04-15 08:36:26

0

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

+0

我不是数据库的详细信息,例如想要存储一些东西,如每页显示的帖子数量。我要创建的脚本将用于多台服务器上,例如每页的帖子数量需要可编辑。我可以加载到一个会话,但我认为加载它作为一个常量*?在配置文件中将是一个更好的主意。 – flyersun 2011-04-14 09:52:27

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;

在你的数据库,你需要使用“钥匙”和“一个“设置”表值“列。

就是这样。有了这个模型,您可以随时设置使用数据库,并随时使用config/*。php文件。

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

我做的变量得到的CI实例,只是因为它更容易和漂亮。
阅读像这样的配置数据:$this->pref->sess_cookie_name

相关问题