Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konfiguracja bazy danych MySQL w osobnej klasie

Zmodyfikowałem twoją klasę, aby działała zgodnie z Twoimi oczekiwaniami:

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

Użycie:

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

Zauważ, że możesz wywoływać connect() tyle razy, ile chcesz i użyje bieżącego połączenia lub utworzy je, jeśli nie istnieje. To dobra rzecz .

Pamiętaj też, że za każdym razem inicjujesz obiekt Bazy danych (przy użyciu nowego) utworzysz nowe połączenie z bazą danych. Proponuję przyjrzeć się zaimplementowaniu klasy bazy danych jako Singleton lub przechowywanie go w Rejestrze dla dostępu globalnego.

Możesz też zrobić to w brudny sposób i wrzucić do $GLOBALS.

Edytuj

Pozwoliłem sobie na zmodyfikowanie twojej klasy, aby zaimplementować wzorzec Singleton i przestrzegać konwencji 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);
    }
}

Użycie:

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

lub

$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. Harmonogram zdarzeń MySQL codziennie o określonej godzinie

  2. Jak zainstalować dbWatch, aby monitorować wydajność MySQL w systemie Linux?

  3. Jak rozwiązać błąd MySQL Nie możesz określić docelowej tabeli X do aktualizacji w klauzuli FROM?

  4. Dlaczego nie mogę wyświetlić dwa razy tego samego wyniku za pomocą mysqli_fetch_assoc?

  5. Jak napisać zapytanie mysql, aby sprawdzić wiele wybranych zmiennych, w których przesłany formularz może pasować do 1 0f 5 pól?