1

嘿伙计们希望你能帮助我。

基本上我正在开发一个由其他人使用 codeigniter 创建的网站。该站点有两个实例,一个用于开发,一个用于实时。该站点仍在建设中,这意味着文件不断更改并从开发站点(经过测试后)移动到实时站点。

现在的问题是,最初创建该站点的人从几个视图中进行了一些数据库调用。而要从视图访问数据库,他手动从视图连接到数据库,即使用

$db=mysql_connect(...);
mysql_select_db(...);

这意味着每次更改视图时,在将文件从开发站点复制到实时站点之前,我们需要更改这些视图中的变量。

将所有查询移动到模型,然后通过控制器调用它们会花费太长时间,所以想知道是否有一种方法可以访问 database.php 文件中的数据库变量并将它们作为 mysql_connect 的变量传递。

我尝试了 $this->db->database 但收到错误“未定义的属性:CI_Loader::$db”

提前致谢

4

4 回答 4

2

无法从视图访问数据库对象。你也不应该这样做

$db=mysql_connect(...);
mysql_select_db(...);

在视图中。尝试从视图中删除这些呼叫。并从模型中调用它。

这就是codeigniter 中的 MVC 的 用途。否则使用 codeigniter 框架有什么用。

也可以看看:

  1. 从codeigniter中的视图访问模型?
  2. CodeIgniter - 从视图内部调用函数
于 2012-06-20T14:06:14.833 回答
0

首先不要急于将数据库调用移动到视图,而是看看这个答案:https ://stackoverflow.com/a/5835321/1444604

于 2012-06-20T14:05:37.673 回答
0

在 constant.php 中定义常量,为它们分配数据库用户名、密码、主机名等,并在您想要的任何地方使用它们

于 2012-06-20T14:09:22.053 回答
0

如果这个网站还在建设中,现在解决所有这些编程问题会比以后更好。

请记住 mysql_* 代码已被弃用,并且不会再被主机接受。

提示您可以使用有时我们忘记的内容,即在许多文本编辑器和 IDE 中替换文本的选项,通常使用快捷键 ctrl + H,您可以在许多文件中重写大量代码,但要小心,否则情况会变得更糟。

好吧...也就是说,如果您在加载数据库之前使用此代码,您在 $this->db->database() 视图中尝试执行的操作可能会起作用。我认为它应该像创建库一样工作。

$CI =& get_instance();

看一看,但即使它有效,也要尽可能避免它: https ://www.codeigniter.com/user_guide/general/creating_libraries.html

祝你好运!

于 2017-09-01T01:44:48.263 回答