Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie stellen Sie in PHP effizient eine Verbindung zu MySQL her, ohne sich bei jeder Abfrage neu zu verbinden?

Normalerweise werden Verbindungen hergestellt, sobald eine Seite geladen wird. AKA

class Database{
    public function connect()
    {
         $this->connection = mysql_connect();
    }

    // This will be called at the end of the script.
    public function __destruct()
    {
        mysql_close($this->connection);
    }

    public function function query($query)
    {
        return mysql_query($query, $this->connection);
    }
}
$database = new Database;
$database->connect();

$database->query("INSERT INTO TABLE (`Name`) VALUES('Chacha')");

Grundsätzlich öffnen Sie die Verbindung am Anfang der Seite und schließen sie am Ende der Seite. Dann können Sie während der Seite verschiedene Abfragen machen und müssen nichts an der Verbindung tun.

Sie könnten sogar mysql_connect im Konstruktor ausführen, wie Erik vorschlägt.

Um das Obige mit globalen Variablen zu verwenden (nicht empfohlen, da es einen globalen Zustand erstellt), würden Sie so etwas wie

tun
Global $db;

$db = new Database;
// ... do startup stuff

function doSomething()
{
    Global $db;
    $db->query("Do Something");
}

Oh, und niemand hat erwähnt, dass Sie keinen Parameter übergeben müssen. Einfach verbinden

mysql_connect();

Dann verwendet mysql_query einfach die letzte Verbindung, egal wie der Geltungsbereich ist.

mysql_connect();

function doSomething()
{
    mysql_query("Do something");
}

Laut den Kommentaren:

Sie sollten überlegen, ob Sie mysql_connect verwenden oder mysql_pconnect . Sie sollten sich jedoch trotzdem nur einmal pro Skript verbinden.