Eine PHP- und MySQL-Verbindung herstellen
Eine Verbindung zwischen PHP und MySQL ist essenziell für dynamische Webanwendungen. Erfahren Sie, wie Sie eine sichere Verbindung aufbauen.
Eine Verbindung zwischen PHP und MySQL herzustellen ist essenziell für den Aufbau dynamischer Webanwendungen. Mit dieser Verbindung können Sie auf Daten zugreifen und diese bearbeiten, die in einer MySQL-Datenbank über PHP-Skripte gespeichert sind. Dieser Artikel führt Sie durch alle Möglichkeiten der Verbindungsherstellung, erläutert, wann welche Methode geeignet ist, und erklärt die Sicherheitspraktiken, die Ihre Anwendung schützen.
Diese Seite behandelt:
- Die drei Verbindungs-APIs, die PHP bietet, und welche Sie wählen sollten
- Verbindung mit dem prozeduralen
mysqli-Stil und Fehlerprüfung - Den objektorientierten
mysqli-Stil und den modernen PDO-Stil - Eine Datenbank auswählen, die erste Abfrage ausführen und die Verbindung schließen
- Häufige Fallstricke: Zeichensätze, Fehlerberichterstattung und Umgang mit Anmeldedaten
Voraussetzungen
Bevor wir mit der Verbindungsherstellung beginnen, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Ein Webserver mit installiertem PHP (z. B. Apache oder Nginx)
- Eine MySQL-Datenbank
- PHP-MySQL-Erweiterung (in den meisten PHP-Installationen enthalten)
PHP- und MySQL-Verbindung verstehen
Eine PHP- und MySQL-Verbindung umfasst zwei Hauptkomponenten: PHP und eine MySQL-Datenbank. PHP ist eine serverseitige Skriptsprache zur Erstellung dynamischer Webseiten, während eine MySQL-Datenbank zum Speichern und Abrufen von Daten verwendet wird.
PHP bietet Ihnen drei Möglichkeiten, mit MySQL zu kommunizieren. Den Unterschied von Anfang an zu kennen, erspart Ihnen das spätere Umschreiben von Code:
| API | Stil | Prepared Statements | Funktioniert mit anderen Datenbanken |
|---|---|---|---|
mysqli (prozedural) | Funktionsaufrufe wie mysqli_connect() | Ja | Nur MySQL/MariaDB |
mysqli (objektorientiert) | Methoden auf einem mysqli-Objekt | Ja | Nur MySQL/MariaDB |
| PDO | Methoden auf einem PDO-Objekt | Ja | Viele Datenbanken (eine API) |
Die alten mysql_*-Funktionen (ohne das i) wurden in PHP 7 entfernt — verwenden Sie diese nie. Für neue Projekte bevorzugen Sie PDO oder objektorientiertes mysqli, da diese Prepared Statements sauber unterstützen, die Ihr wichtigstes Mittel gegen SQL-Injection sind. Diese Seite zeigt alle drei, damit Sie jede Codebasis lesen und pflegen können. Einen tieferen Einblick in die mysqli-Erweiterung selbst finden Sie unter PHP MySQLi.
Eine Verbindung herstellen
Um eine Verbindung zwischen PHP und MySQL herzustellen, verwenden Sie die Funktion mysqli_connect(). Diese Funktion akzeptiert mehrere Parameter, darunter den Servernamen, den Benutzernamen und das Passwort.
Hier ist ein Beispiel für die Verwendung der Funktion mysqli_connect():
PHP-Beispiel zur Verwendung der Funktion mysqli_connect
<?php
$server = "localhost";
$username = "your_username";
$password = "your_password";
// Establish connection
$conn = mysqli_connect($server, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>Im obigen Beispiel ist $server auf localhost gesetzt, den Standardspeicherort des MySQL-Servers. $username und $password sollten auf den Benutzernamen und das Passwort für den Datenbankzugriff gesetzt werden.
Nach dem Herstellen der Verbindung verwenden wir die Funktion mysqli_connect_error(), um zu prüfen, ob die Verbindung erfolgreich war. Schlägt die Verbindung fehl, gibt das Skript eine Fehlermeldung aus und beendet die Verbindung. Bei erfolgreicher Verbindung gibt das Skript „Connected successfully" aus.
Tipp: Sie können den Datenbanknamen auch als vierten Parameter an
mysqli_connect()übergeben, um die Verbindungslogik zu vereinfachen und einen separaten Datenbankauswahlschritt zu überspringen:$conn = mysqli_connect($server, $username, $password, "your_database");
Objektorientiertes mysqli
Dieselbe Verbindung im objektorientierten Stil erstellt ein mysqli-Objekt mit new. Viele Entwickler empfinden es als sauberer, weil die Verbindung und ihre Methoden auf einem Objekt liegen:
<?php
$conn = new mysqli("localhost", "your_username", "your_password", "your_database");
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>Verbindung mit PDO
PDO (PHP Data Objects) bietet Ihnen eine einheitliche API für viele Datenbanken. Die Verbindungsdetails werden in einen DSN-String (Data Source Name) eingetragen:
<?php
$dsn = "mysql:host=localhost;dbname=your_database;charset=utf8mb4";
try {
$pdo = new PDO($dsn, "your_username", "your_password");
// Make PDO throw exceptions on error instead of failing silently
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
} catch (PDOException $e) {
die("Connection failed: " . $e->getMessage());
}
?>Zeichensatz festlegen. Geben Sie immer
charset=utf8mb4(PDO) an oder rufen Sie$conn->set_charset("utf8mb4")(mysqli) auf. Ohne diese Angabe können Mehrbyte-Zeichen und Emojis falsch gespeichert oder zurückgegeben werden.
Eine Datenbank auswählen
Nachdem Sie eine Verbindung zum MySQL-Server hergestellt haben, müssen Sie eine Datenbank auswählen, mit der Sie arbeiten möchten. Dazu können Sie die Funktion mysqli_select_db() verwenden.
Hier ist ein Beispiel für die Verwendung der Funktion mysqli_select_db():
PHP-Beispiel zur Verwendung der Funktion mysqli_select_db
<?php
$server = "localhost";
$username = "your_username";
$password = "your_password";
$db = "your_database";
// Establish connection
$conn = mysqli_connect($server, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Select database
$select_db = mysqli_select_db($conn, $db);
// Check database selection
if (!$select_db) {
die("Error selecting database: " . mysqli_error($conn));
}
echo "Database selected successfully";
?>Im obigen Beispiel ist $db auf den Namen der Datenbank gesetzt, die Sie auswählen möchten. Nach dem Herstellen der Verbindung verwenden wir die Funktion mysqli_select_db(), um die Datenbank auszuwählen. Die Funktion akzeptiert zwei Parameter: die Verbindung und den Namen der Datenbank.
Anschließend verwenden wir die Funktion mysqli_error(), um zu prüfen, ob die Datenbank erfolgreich ausgewählt wurde. Schlägt die Auswahl fehl, gibt das Skript eine Fehlermeldung aus und beendet die Verbindung. Bei erfolgreicher Auswahl gibt das Skript „Database selected successfully" aus.
Ihre erste Abfrage ausführen
Eine Verbindung ist erst nützlich, wenn Sie eine Abfrage ausführen. Das folgende Beispiel wählt Zeilen aus einer users-Tabelle aus und iteriert über die Ergebnisse. Da der Wert aus einer Variablen stammt, wird ein Prepared Statement verwendet, damit Benutzereingaben niemals in das SQL injiziert werden können:
<?php
$conn = new mysqli("localhost", "your_username", "your_password", "your_database");
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Prepare a parameterized query
$stmt = $conn->prepare("SELECT id, name FROM users WHERE id > ?");
$stmt->bind_param("i", $minId); // "i" = integer parameter
$minId = 0;
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row["id"] . ": " . $row["name"] . "\n";
}
$stmt->close();
$conn->close();
?>Erstellen Sie niemals Abfragen durch das Verketten von rohen Benutzereingaben in den SQL-String — das öffnet die Tür für SQL-Injection. Für einen tieferen Einblick in die Parameterbindung lesen Sie MySQL Prepared Statements. Für die vollständige CRUD-Übersicht siehe Daten einfügen und Daten auswählen.
Die Verbindung schließen
Wenn Sie die Arbeit mit einer MySQL-Datenbank abgeschlossen haben, ist es wichtig, die Verbindung zu schließen. Dadurch werden Ressourcen freigegeben und potenzielle Sicherheitsprobleme vermieden.
Um die Verbindung zu schließen, können Sie die Funktion mysqli_close() verwenden. Hier ist ein Beispiel für die Verwendung der Funktion mysqli_close():
PHP-Beispiel zur Verwendung der Funktion mysqli_close
<?php
$server = "localhost";
$username = "your_username";
$password = "your_password";
$db = "your_database";
// Establish connection
$conn = mysqli_connect($server, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Select database
$select_db = mysqli_select_db($conn, $db);
// Check database selection
if (!$select_db) {
die("Error selecting database: " . mysqli_error($conn));
}
// Close connection
mysqli_close($conn);
echo "Connection closed";
?>Im obigen Beispiel verwenden wir die Funktion mysqli_close(), um die Verbindung zu schließen. Die Funktion akzeptiert einen Parameter: die Verbindung. Das Skript gibt dann „Connection closed" aus, um zu bestätigen, dass die Verbindung geschlossen wurde.
Sicherheitshinweis: Vermeiden Sie es in Produktionsumgebungen, Anmeldedaten im Code fest einzutragen. Verwenden Sie Umgebungsvariablen oder Konfigurationsdateien zur Speicherung sensibler Daten.
Fazit
In diesem Artikel haben wir die Voraussetzungen, die drei Verbindungs-APIs (prozedurales mysqli, objektorientiertes mysqli und PDO), das Herstellen einer Verbindung, das Auswählen einer Datenbank, das Ausführen einer sicheren parametrisierten Abfrage und das Schließen der Verbindung behandelt. Sie sollten nun in der Lage sein, PHP mit MySQL zu verbinden und CRUD-Operationen durchzuführen.
Für moderne PHP-Anwendungen bevorzugen Sie PDO oder das objektorientierte mysqli-Interface mit Prepared Statements: Sie bieten bessere Sicherheit und klarere Fehlerbehandlung. Fahren Sie von hier aus mit Eine MySQL-Datenbank erstellen, Eine Tabelle erstellen und der MySQL-Datenbank-Übersicht fort.