Programmieren mit PHP, Teil 6

MySQL und andere Datenbanken unter PHP

| Autor / Redakteur: Thomas Joos / Stephan Augsten

Die Anbindung an MySQL-Datenbanken bei PHP-Programmen besonders häufig anzutreffen, mehrere Wege führen dabei zum Ziel.
Die Anbindung an MySQL-Datenbanken bei PHP-Programmen besonders häufig anzutreffen, mehrere Wege führen dabei zum Ziel. (Bild: PHP.net / MySQL.com)

Um Datenquellen an PHP anzubinden, bieten sich SQL-Datenbanken an, wobei MySQL ein besonders verbreitetes Datenbank-Managementsystem ist. Während PHP selbst über Funktionen wie PHP Data Objects verfügt, bieten einige Datenbankhersteller auch Schnittstellen zur Anbindung von PHP-Programmen an.

Viele Datenbanken lassen sich an PHP anbinden. Eine Liste der Erweiterungen ist auf der Seite „Datenbankerweiterungen“ in der Online-Anleitung zu PHP zu finden. In vielen Fällen wird dabei mit MySQL gearbeitet.

In der Dokumentation von PHP wird auf der Seite „Choosing an API“ darauf eingegangen, wie die Anbindung von MySQL erfolgen kann. Hier bietet die Anleitung drei verschiedene Wege an, die wir nachfolgend aufzeigen.

In vielen Fällen wird mit der MySQL Improved Extension (mysqli) gearbeitet. Für die Anbindung mit „mysqli“ ist keine weitere Software oder Erweiterung notwendig. Alle benötigten Funktionen kennt PHP schon von Haus aus. Im Folgenden ist ein Beispiel zu sehen, wie die Anbindung funktionieren kann.

<?php
// mysqli
$mysqli = new mysqli("example.com", "user", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

Ebenfalls weit verbreitet sind PHP Data Objects (PDO), um Datenbanken anzusprechen. Die Schnittstelle nutzt externe Treiber der Datenbankhersteller, die wiederum gesondert installiert werden müssen. Auf diesem Weg lassen sich nahezu alle Datenbanken anbinden, die PHP unterstützt. Hier sind aber dementsprechend externe Erweiterungen notwendig.

Im Folgenden ist ein Beispiel zu sehen. Mit PDO lassen sich auch andere Datenbanken anbinden, nicht nur MySQL.

// PDO
$pdo = new PDO('mysql:host=example.com;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);

Die dritte, veraltete Variante für die Anbindung an MySQL besteht darin, direkt auf mySQL zu setzen, um MySQL-Datenbanken zu nutzen. Diese Anbindung wird aber nicht mehr empfohlen, sondern ist vor allem noch in älteren Programmen Bestandteil.

Wird diese Funktion genutzt, erhalten Entwickler eine Warnung, dass die Erweiterung als veraltet markiert wurde, also in zukünftigen Versionen aus dem System gestrichen wird. Mit PHP 7 ist mysql nicht mehr verfügbar. Nachfolgend zeigen wir ein Beispiel dafür:

// mysql
$c = mysql_connect("example.com", "user", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>

MySQL Improved für die Anbindung von Datenbanken nutzen

Um Datenbanken in PHP auf Basis von mysqli anzubinden ist nichts weiter notwendig, alle benötigten Funktionen sind in PHP bereits integriert. Allerdings muss auf dem MySQL-Server die Unterstützung für mysqli auch aktiviert sein. Alle Informationen und Anleitungen für mysqli ist auf der Seite „MySQL Improved Extension“ zu finden.

Jeder Entwickler muss selbst entscheiden, ob er lieber mit PDO oder mit mysqli arbeitet. Die Erweiterung mysqli ist komplizierter in der Verwendung, dafür aber auch umfangreicher. Wer ältere PHP-Programme von mysql umstellen will, ist mit mysqli aber oft besser beraten, da hier der Umstieg einfacher ist. PDO ist einfacher zu lernen, und bietet vor allem dann Vorteile, wenn mit mehreren Datenbanksystemen gearbeitet wird. Denn in diesem Fall muss nur diese API gelernt werden, wenn verschiedene Datenbanken genutzt werden.

Bei der Verwendung mit mysqli kann prozedural oder objektorientiert zugegriffen werden. Darüber hinaus steht eine eigene Klasse für mysqli zur Verfügung. Die entsprechenden Informationen sind in der PHP-Anleitung zu finden. Der Verbindungsaufbau mit MySQL kann zu Beginn einer PHP-Datei stehen, oder mit einer eigenen Include-Datei, was der empfohlene Weg ist:

<?php
$database = new mysqli(<Name des Servers>, <Anmeldenamen>, <Kennwort>, <Name der DB>);

Durch diese Zeile wird eine Verbindung hergestellt. Es gibt in der mysqli-Klasse auch Möglichkeiten ausführliche Meldungen anzuzeigen, wenn eine Verbindung nicht hergestellt werden kann.

Wurde die Include-Datei erstellt, kann wiederum in der PHP-Datei für die eigentliche Anwendung die Verbindung zur Datenbank hergestellt. Die Klasse für mysqli kann hier auch mit Exceptions arbeiten. In der PHP-Datei muss der genaue Pfad zur Datei angegeben werden, mit der die Verbindung erfolgen soll. Dazu kann zum Beispiel mit dem folgenden Befehl gearbeitet werden:

Try{
require_once `includes/connectmysql.php` ;
}

Das ist natürlich nur ein sehr eingeschränktes Beispiel: Generell ist es sinnvoll, am Ende des PHP-Programmes die Datenbank zu schließen:

$database->close();

Datenbanken werden zwar in den meisten Fällen automatisch geschlossen, es ist aber durchaus sinnvoll hier auch selbst im Code zu steuern, wann eine Datenbank nicht mehr benötigt wird. Es wird also mit der mysqli-Klasse recht gemacht eine Datenbank zu verbinden. Wichtig ist dabei die Daten der Datenbanken zu kennen. Dazu gehören Servernamen, Anmeldenamen, Kennwort, Ports und Sockel. Sobald eine Datenbank verbunden ist, können die Daten in PHP genutzt werden.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45687861 / Datenbanken)