2010-01-19 53 views
0

在构建动态网站时,我使用php include来连接数据库。所包含的文件是很基本的:如何组合多个php/mysql数据库连接?

mysql_connect($hostname = 'host', $username = 'user', $password = 'password'); mysql_select_db('database');

这工作得很好。

在一些地方,我使用AJAX系统创建数据库记录的拖放重新排序,同时更新数据库,它是从我在互联网上找到的东西改编而来的。它使用自己的连接代码:

class SortableExample { protected $conn;
protected $user = 'user';
protected $pass = 'password';
protected $dbname = 'database';
protected $host = 'host';
public function __construct() {
$this->conn = mysql_connect($this->host, $this->user, $this->pass);
mysql_select_db($this->dbname,$this->conn);
}

这也炒​​菜罚款。

然而,这意味着我必须将用户名,密码,主机和数据库添加到两个单独的文件中。有时第二个被遗忘,导致网站失败。

我的问题是,如何将两个连接文件合并为一个,或者如何获得第二个代码块来接受外部变量,这样我只需要在一个地方输入实际值?

回答

1

你最后的问题很简单。

db.config.php

$host = ''; 
$user = ''; 
$pass = ''; 
$db = ''; 

db.plain.php

include 'db.config.php'; 

$conn = mysql_connect($host, $user, $pass); 
mysql_select_db($db,$conn); 

db.class.php

include 'db.config.php'; 

class SortableExample 
{ 
    protected $conn; 
    public function __construct() 
    { 
    global $host, $user, $pass, $db; 
    $this->conn = mysql_connect($host, $user, $pass); 
    mysql_select_db($db,$this->conn); 
    } 
} 
+0

这样做。我几乎在自己的尝试中,但我忘记了在变量前面使用全局。 – AndrewDFrazier 2010-01-19 14:27:49

0

您可以简单地将数据库连接代码放在另一个文件中,并将其包含在您需要的任何地方。

+0

这就是我通常做,但是这并创建一个类的是,我不能让我已经创建的连接来发挥作用的文件。但是,感谢Kolky的回答,它现在可以工作。 – AndrewDFrazier 2010-01-19 14:27:07

+0

您也可以在类函数中包含代码;) – Franz 2010-01-19 14:42:19

0

创建数据库连接的单一入口点。

使用一个Singleton与延迟实例为:

​​

,然后从你的代码

ConnectionProvider::getInstance()->getConnection(); 

无论你需要它使用的连接。因此

SortableExample将成为:

class SortableExample { 
    protected $conn; 
    public function __construct() { 
     $this->conn = ConnectionProvider::getInstance()->getConnection(); 
    } 
    ... 
} 
+0

我喜欢这样的外观,但我认为我必须改变我网站上的多个页面,这些页面会调用我的正常数据库连接。但是当我有更多时间时,我会仔细研究它,因为我认为我应该使用更多的代码,而不是我创建的基本内容。 – AndrewDFrazier 2010-01-19 14:25:00