Nasıl birden çok PHP / MySQL veritabanı bağlantıları birleştirmek için?

3 Cevap php

Dinamik web siteleri oluştururken ben bir php veritabanına benim bağlantıları yapmak için içerir kullanın. Dahil dosyası çok temel:

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

Bu çalışıyor.

Bazı yerlerde ben aynı anda veritabanını günceller veritabanı kayıtlarının sürükle ve bırak reordering oluşturmak için bir AJAX sistemi kullanmak, ben internet üzerinde bulunan bir şey uyarlanmıştır. Bu kendi bağlantı kodu kullanır:

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

Bu da gayet woks.

Bu ne demektir, ancak, iki ayrı dosyalar için kullanıcı adı, şifre, ev sahibi ve veritabanına eklemek zorunda olmasıdır. Bazen ikinci bir unutulmuş ve başarısız web sitesi neden olur.

Benim soru nasıl ben de birine iki bağlantı dosyaları birleştirebilirsiniz, YA ben sadece bir yerde gerçek değerleri girmek zorunda böylece nasıl dış değişkenleri kabul kod ikinci blok alabilirsiniz nedir?

3 Cevap

Son bir soru kolaydır.

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

Sen sadece başka bir dosyada veritabanı bağlantı kodu koymak ve bunu ihtiyaç her yerde dahil edebilirsiniz.

Veritabanı bağlantısı için tek bir giriş noktası oluşturun.

Bunun için tembel örnekleme ile bir Singleton kullanın:

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

Ve sonra, sizin kod

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

Eğer ihtiyacınız olan her yerde bağlantısı kullanmak için.

SortableExample böylece olacak:

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