sql >> Database >  >> RDS >> Mysql

MySQL-databaseconfiguratie in een aparte klasse

Ik heb je klas aangepast om te werken zoals je lijkt te verwachten:

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

Gebruik:

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

Merk op dat je connect() zo vaak kunt aanroepen als je wilt en het zal de huidige verbinding gebruiken, of er een maken als deze niet bestaat. Dit is een goede zaak .

Houd er ook rekening mee dat elke keer dat u instantieert een Database-object (met new) maakt u een nieuwe verbinding met de database. Ik raad je aan om te kijken naar de implementatie van je Database-klasse als een Singleton of het opslaan in een Register voor wereldwijde toegang.

Je kunt het ook op de vuile manier doen en het in $GLOBALS schuiven.

Bewerken

Ik ben zo vrij geweest om je klas aan te passen om het Singleton-patroon te implementeren en de PHP5 OOP-conventies te volgen.

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

Gebruik:

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

of

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


  1. Mysql -- Laatste 30 dagen

  2. Tijdstempel converteren met milliseconden tot nu toe in Oracle

  3. Boomstructuur in sql in Oracle.Hoe boom, onderliggende knooppunten en bovenliggende knooppunten in SQL Oracle weer te geven

  4. hoe een array in te stellen als een mysql-gebruikersvariabele