PHP Verbindung mit MySQL herstellen


Für PHP 5 und höher wird empfohlen, die folgenden Methoden zur Verbindung mit MySQL zu verwenden:

  • MySQLi-Erweiterung("i" steht für "improved")
  • PDO (PHP Data Objects)

In früheren Versionen von PHP haben wir die MySQL-Erweiterung verwendet. Diese Erweiterung ist jedoch seit 2012 veraltet.


Sollte ich MySQLi oder PDO verwenden?

Wenn Sie eine kurze Antwort benötigen, lautet sie: "Verwenden Sie die, mit der Sie vertraut sind."

MySQLi und PDO haben ihre eigenen Vorteile:

PDO funktioniert mit 12 verschiedenen Datenbanken, während MySQLi nur für MySQL-Datenbanken geeignet ist.

Wenn Ihr Projekt also zwischen mehreren Datenbanken wechseln muss, wird empfohlen, PDO zu verwenden, sodass Sie nur die Verbindungszeichenfolge und einige Abfrageanweisungen ändern müssen. Bei MySQLi müssen Sie, wenn Sie die Datenbank wechseln, den gesamten Code neu schreiben, einschließlich der Abfragen.

Beide sind objektorientiert, aber MySQLi bietet auch eine API-Schnittstelle.

Beide unterstützen Prepared Statements. Prepared Statements können SQL-Injection verhindern und sind sehr wichtig für die Sicherheit von Webprojekten.


Beispiele für MySQLi- und PDO-Verbindungen zu MySQL

In diesem Kapitel und in den folgenden Kapiteln verwenden wir die folgenden drei Methoden, um zu demonstrieren, wie PHP MySQL bedient:

  • MySQLi (objektorientiert)
  • MySQLi (prozedural)
  • PDO

MySQLi-Installation

Linux und Windows: Die MySQLi-Erweiterung wird in den meisten Fällen automatisch installiert, wenn das Paket php5 mysql installiert ist.

Einzelheiten zur Installation finden Sie unter: http://php.net/manual/en/mysqli.installation.php

Sie können über phpinfo() prüfen, ob die Installation erfolgreich war:


PDO-Installation

Einzelheiten zur Installation finden Sie unter: http://php.net/manual/en/pdo.installation.php

Sie können über phpinfo() prüfen, ob die Installation erfolgreich war:


Verbindung zu MySQL

Bevor wir auf die MySQL-Datenbank zugreifen, müssen wir uns zuerst mit dem Datenbankserver verbinden:

Beispiel (MySQLi - objektorientiert)

<?php $servername = "localhost"; $username = "username"; $password = "password"; //Verbindung herstellen $conn = new mysqli($servername, $username, $password); //Verbindung prüfen if ($conn->connect_error) { die("Verbindung fehlgeschlagen:" . $conn->connect_error); } echo "Verbindung erfolgreich"; ?>

Note Beachten Sie, dass im obigen objektorientierten Beispiel $connect_error in PHP 5.2.9 und 5.3.0 hinzugefügt wurde. Wenn Sie mit früheren Versionen kompatibel sein müssen, ersetzen Sie es bitte durch den folgenden Code:

// Verbindung prüfen
if (mysqli_connect_error()) {
die("Datenbankverbindung fehlgeschlagen: " . mysqli_connect_error());
}

Beispiel (MySQLi - prozedural)

<?php $servername = "localhost"; $username = "username"; $password = "password"; //Verbindung herstellen $conn = mysqli_connect($servername, $username, $password); //Verbindung prüfen if (!$conn) { die("Verbindung fehlgeschlagen: " . mysqli_connect_error()); } echo "Verbindung erfolgreich"; ?>


Beispiel (PDO)

<?php $servername = "localhost"; $username = "Benutzername"; $password = "Passwort"; try { $conn = new PDO("mysql:host=$servername;", $username, $password); echo "Verbindung erfolgreich"; } catch(PDOException $e) { echo $e->getMessage(); } ?>

Note Beachten Sie, dass wir im obigen PDO-Beispiel bereits die Datenbank (myDB) angegeben haben. PDO muss den Datenbanknamen während des Verbindungsvorgangs festlegen. Wenn er nicht angegeben wird, wird eine Ausnahme ausgelöst.


Schließen der Verbindung

Die Verbindung wird automatisch geschlossen, nachdem die Ausführung des Skripts beendet ist. Sie können auch den folgenden Code verwenden, um die Verbindung zu schließen:

Beispiel (MySQLi - objektorientiert)

$conn->close();


Beispiel (MySQLi - prozedural)

mysqli_close($conn);


Beispiel (PDO)

$conn = null;

Weitere Erweiterungen