Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Konfigurasi database MySQL di kelas terpisah

Saya memodifikasi kelas Anda agar berfungsi seperti yang Anda harapkan:

<?php
class Database
{
    var $conn = null;
    var $config = array(
        'username' => 'someuser',
        'password' => 'somepassword',
        'hostname' => 'some_remote_host',
        'database' => 'a_database'
    );

    function __construct() {
        $this->connect();
    }

    function connect() {
        if (is_null($this->conn)) {
            $db = $this->config;
            $this->conn = mysql_connect($db['hostname'], $db['username'], $db['password']);
            if(!$this->conn) {
                die("Cannot connect to database server"); 
            }
            if(!mysql_select_db($db['database'])) {
                die("Cannot select database");
            }
        }
        return $this->conn;
    }
}

Penggunaan:

$db = new Database();
$conn = $db->connect();

Perhatikan bahwa Anda dapat memanggil connect() sebanyak yang Anda suka dan itu akan menggunakan koneksi saat ini, atau membuatnya jika tidak ada. Ini adalah hal yang baik .

Perhatikan juga bahwa setiap kali Anda membuat instance objek Database (menggunakan baru) Anda akan membuat koneksi baru ke database. Saya sarankan Anda melihat penerapan kelas Database Anda sebagai Lajang atau menyimpannya di Registry untuk akses global.

Anda juga dapat melakukannya dengan cara kotor dan memasukkannya ke dalam $GLOBALS.

Sunting

Saya mengambil kebebasan untuk memodifikasi kelas Anda untuk mengimplementasikan pola Singleton, dan mengikuti konvensi PHP5 OOP.

<?php
class Database
{
    protected static $_instance = null;

    protected $_conn = null;

    protected $_config = array(
        'username' => 'someuser',
        'password' => 'somepassword',
        'hostname' => 'some_remote_host',
        'database' => 'a_database'
    );

    protected function __construct() {
    }

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

    public function getConnection() {
        if (is_null($this->_conn)) {
            $db = $this->_config;
            $this->_conn = mysql_connect($db['hostname'], $db['username'], $db['password']);
            if(!$this->_conn) {
                die("Cannot connect to database server"); 
            }
            if(!mysql_select_db($db['database'])) {
                die("Cannot select database");
            }
        }
        return $this->_conn;
    }

    public function query($query) {
        $conn = $this->getConnection();
        return mysql_query($query, $conn);
    }
}

Penggunaan:

$res = Database::getInstance()->query("SELECT * FROM foo;");

atau

$db = Database::getInstance();
$db->query("UPDATE foo");
$db->query("DELETE FROM foo");


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GROUP BY setelah ORDER BY

  2. Deteksi kegagalan pembaruan/penyisipan mysql karena batasan unik yang dilanggar

  3. PHP Pthreads - menggunakan mysqli

  4. pernyataan siap ditiru vs pernyataan siap nyata

  5. Bagaimana saya bisa membangun aplikasi Android dengan database MySQL lokal?