PHP -Verbindung zu MySQL
PHP 5 und höher kann mit einer MySQL-Datenbank arbeiten unter Verwendung von:
- MySQLi-Erweiterung (das „i“ steht für Improved)
- PDO (PHP-Datenobjekte)
Frühere Versionen von PHP verwendeten die MySQL-Erweiterung. Diese Erweiterung wurde jedoch 2012 eingestellt.
Soll ich MySQLi oder PDO verwenden?
Wenn Sie eine kurze Antwort brauchen, wäre es "Was auch immer Sie mögen".
Sowohl MySQLi als auch PDO haben ihre Vorteile:
PDO funktioniert auf 12 verschiedenen Datenbanksystemen, während MySQLi nur mit MySQL-Datenbanken funktioniert.
Wenn Sie also Ihr Projekt auf die Verwendung einer anderen Datenbank umstellen müssen, macht PDO den Vorgang einfach. Sie müssen nur die Verbindungszeichenfolge und einige Abfragen ändern. Bei MySQLi müssen Sie den gesamten Code neu schreiben – einschließlich Abfragen.
Beide sind objektorientiert, aber MySQLi bietet auch eine prozedurale API.
Beide unterstützen vorbereitete Anweisungen. Vorbereitete Anweisungen schützen vor SQL-Injection und sind sehr wichtig für die Sicherheit von Webanwendungen.
MySQL-Beispiele sowohl in MySQLi- als auch in PDO-Syntax
In diesem und in den folgenden Kapiteln demonstrieren wir drei Arten der Arbeit mit PHP und MySQL:
- MySQLi (objektorientiert)
- MySQLi (prozedural)
- PDO
MySQLi-Installation
Für Linux und Windows: Die MySQLi-Erweiterung wird in den meisten Fällen automatisch installiert, wenn das php5-mysql-Paket installiert wird.
Einzelheiten zur Installation finden Sie unter: http://php.net/manual/en/mysqli.installation.php
PDO-Installation
Einzelheiten zur Installation finden Sie unter: http://php.net/manual/en/pdo.installation.php
Öffnen Sie eine Verbindung zu MySQL
Bevor wir auf Daten in der MySQL-Datenbank zugreifen können, müssen wir uns mit dem Server verbinden können:
Beispiel (MySQLi objektorientiert)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
Hinweis zum obigen objektorientierten Beispiel:
$connect_error war bis PHP 5.2.9 und 5.3.0 defekt. Wenn Sie die Kompatibilität mit PHP-Versionen vor 5.2.9 und 5.3.0 sicherstellen müssen, verwenden Sie stattdessen den folgenden Code:
// Verbindung
prüfen if (mysqli_connect_error()) {
die("Datenbankverbindung fehlgeschlagen: " . mysqli_connect_error());
}
Beispiel (MySQLi-Prozedur)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>
Beispiel (PDO)
<?php
$servername = "localhost";
$username = "username";
$password = "password";
try {
$conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
Hinweis: Im obigen PDO-Beispiel haben wir auch eine Datenbank (myDB) angegeben . PDO erfordern eine gültige Datenbank, zu der eine Verbindung hergestellt werden kann. Wenn keine Datenbank angegeben ist, wird eine Ausnahme ausgelöst.
Tipp: Ein großer Vorteil von PDO ist, dass es eine Ausnahmeklasse hat, um alle Probleme zu behandeln, die bei unseren Datenbankabfragen auftreten können. Wenn innerhalb des try{ }-Blocks eine Ausnahme ausgelöst wird, stoppt die Ausführung des Skripts und geht direkt zum ersten catch(){ }-Block über.
Schließen Sie die Verbindung
Die Verbindung wird automatisch geschlossen, wenn das Skript beendet wird. Um die Verbindung vorher zu schließen, verwenden Sie Folgendes:
MySQLi objektorientiert:
$conn->close();
MySQLi-Prozedur:
mysqli_close($conn);
PDO:
$conn = null;