【发布时间】:2012-07-23 01:27:40
【问题描述】:
我有一个functions.php 文件,其中有一个PDO 连接我用来访问数据库和所有好东西就是这个:
$host = "localhost";
$db = "maindatabase";
$adminuser = "admin";
$adminpw = "123456";
global $connection;
$connection = new Connection($host,$adminuser,$adminpw,$db);
我 require 这个脚本在每个需要访问数据库的文件上,在某些情况下我想从 $db = "maindatabase"; 更改为 $db = "anotherdb"; 我知道我可以只用一个 setter
$connection->setDatabase("anotherdb");
但是由于我将require functions.php 文件放入所有其他文件中,我不知道它是否会将自己覆盖回默认值,有谁知道我该如何更改它并使其保持不变?
编辑
我在我的代码中将 require 更改为 require_once 并且由于 PHP 文档说如果该文件已经是 必需 它不会再次添加它,你认为这会解决问题?
【问题讨论】:
-
functions.php 是否以任何方式包装此代码?如果这是在一个类中,您可以在每个页面脚本中调用构造函数,在每种情况下提供数据库名称。无论如何:这是使用某种框架的原因 - 您可以在父控制器或其他初始化部分中进行初始化,具体取决于路由变量或其他可测试条件。
-
是的,实际上我创建了
Connection课程,这是functions.php所指的课程。 -
我不是这个意思。我的意思是,如果您在其中包含函数并创建一个全局对象,那么您已经创建了一个在某些情况下您不会使用的连接。最好运行一次创建连接的代码,具体取决于您要连接的数据库。
-
我只在需要它的文件中包含
functions.php。除了用户将在系统启动时选择数据库连接,它将从那里与该数据库一起使用 -
用户将在系统启动时选择数据库连接,然后它将与该数据库一起工作 - 你的意思是存储在会话中?这很好,但它仍然没有回答关于如何安排一些页面来访问一个数据库,并让其他页面访问另一个数据库的问题。