簡體   English   中英

如何合並多個php / mysql數據庫連接?

[英]How to combine multiple php/mysql database connections?

建立動態網站時,我使用php include來建立與數據庫的連接。 包含的文件非常基本:

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);
}

這也可以。

但是,這意味着我必須將用戶名,密碼,主機和數據庫添加到兩個單獨的文件中。 有時第二個被遺忘並導致網站失敗。

我的問題是,如何將兩個連接文件合並為一個,或者如何獲取第二個代碼塊來接受外部變量,以便只需要在一個地方輸入實際值?

您的最后一個問題很簡單。

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);
  }
}

您可以簡單地將數據庫連接代碼放在另一個文件中,並將其包含在您需要的任何位置。

為您的數據庫連接創建一個入口點。

為此,請使用具有延遲實例化的Singleton:

class ConnectionProvider { 
    protected $conn;
    protected $user = 'user';
    protected $pass = 'password';
    protected $dbname = 'database';
    protected $host = 'host';
    private static $__instance;

    private function __construct() {
        $this->conn = mysql_connect($this->host, $this->user, $this->pass);
        mysql_select_db($this->dbname,$this->conn);
    }

    public static function getInstance() {
        if ( self::$__instance == null) {
            self::$__instance = new ConnectionProvider();
        }
        return self::$__instance;
    }

    public function getConnection() {
        return $this->conn;
    }
}

然后,從您的代碼

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

在需要的地方使用連接。

這樣,SortableExample將變為:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM