PHP Handbuch
Zurück |  | Nach vorne

# LXV. MySQL Funktionen

# Einführung

Diese Funktionen erlauben den Zugriff auf einen MySQL Datenbank-Server. Weitere Information zu MySQL sind unter http://www.mysql.com/ erhältlich.

Die Dokumentation zu MySQL ist unter http://dev.mysql.com/doc/ zu finden.

# Anforderungen

Um diese Funktionen nutzen zu können, müssen Sie PHP mit MySQL-Unterstützung übersetzen.

# Installation

Durch die Angabe der Konfigurationsoption `--with-mysql[=DIR]` ermöglichen Sie `PHP`den Zugriff auf MySQL Datenbanken.

Seit PHP 4 ist `--with-mysql` im Standard aktiviert. Um PHP ohne MySQL Unterstützung zu kompilieren müssen Sie `--without-mysql` verwenden. Ebenfalls für PHP 4 gilt: falls Sie mit MySQL Unterstützung kompilieren und den Pfad zum Quellverzeichnis von MySQL (DIR) nicht angeben, verwendet `PHP` die internen MySQL-Client Bibliotheken. Unter Windows gibt es keine DLL, die Unterstützung für MySQL ist in PHP 4 enthalten. Verwenden Sie andere Anwendungen, die MySQL ebenfalls nutzen (zum Beispiel auth-mysql) sollten Sie nicht die interne Bibliothek benutzen, sondern den Pfad zum MySQL Quellverzeuchnis wie folgt angeben: `--with-mysql=/pfad/zu/mysql`. Diese Angabe zwingt `PHP` die Client-Bibliotheken zu nutzen, die von MySQL installiert wurden. Diese Vorgehensweise vermeidet jegliche Konflikte.

In PHP 5 ist MySQL weder standardmäßig aktiviert, noch ist die MySQL Client Bibliothek in PHP enthalten. Die Gründe und weitere Details lesen Sie bitte in der FAQ nach.

Diese MySQL Erweiterung arbeitet nicht mit MySQL Versionen größer als 4.1.0 zusammen. Für diese müssen Sie MySQLi benutzen.

Warnung
Abstürze und Startprobleme von `PHP` können auftreten, wenn Sie diese Extension zusammen mit der recode-Extension laden. Für weitere Informationen schauen Sie bitte bei der recode Extension nach.

> Anmerkung: Falls Sie andere Zeichensätze als latin (Standard) benötigen, müssen Sie die externe (nicht die mitgelieferte) libmysql mit den benötigten einkompilierten Zeichensätzen installieren und verwenden.

# Laufzeit Konfiguration

Das Verhalten dieser Funktionen wird von Einstellungen in der `php.ini` bestimmt.

Tabelle 1. MySQL Konfigurations-Optionen

Name | Standard | Veränderbar
--- | --- | ---
mysql.allow_persistent | "On" | PHP_INI_SYSTEM
mysql.max_persistent | "-1" | PHP_INI_SYSTEM
mysql.max_links | "-1" | PHP_INI_SYSTEM
mysql.default_port | NULL | PHP_INI_ALL
mysql.default_socket | NULL | PHP_INI_ALL
mysql.default_host | NULL | PHP_INI_ALL
mysql.default_user | NULL | PHP_INI_ALL
mysql.default_password | NULL | PHP_INI_ALL
mysql.connect_timeout | "0" | PHP_INI_SYSTEM

Weitere Details und die Definition der PHP_INI_* Konstanten sind unter ini_set() zu finden.

Hier eine kurze Erklärung der Konfigurationsoptionen:

`mysql.allow_persistent` boolean

  gibt an, ob persistente Verbindungen zu MySQL gestattet werden sollen.

`mysql.max_persistent` integer

  Die maximale Anzahl von persistenten MySQL Verbindungen pro Prozess.

`mysql.max_links` integer

  Die maximale Anzahl von MySQL Verbindungen, einschließlich persistenter, pro Prozess.

`mysql.default_port` string

  Gibt die Portnummer an, über den die Verbindung zum MySQL-Server aufgebaut werden soll, wenn kein Port als Verbindungsparameter übergeben wurde. Wird die Portnummer nicht angegeben, wird der Port über die `MYSQL_TCP_PORT` Umgebungsvariable, dem `mysql-tcp` Eintrag aus der Datei `/etc/services` oder der Konstanten `MYSQL_PORT` festgelegt, in dieser Reihenfolge. Win32 Systeme verwenden nur die Konstante `MYSQL_PORT`.

`mysql.default_socket` string

  Legt den Socketnamen fest, der bei der Verbindung zu einem lokalen Datenbankserver bennutzt werden soll, wenn kein anderer Name angegeben wurde.

`mysql.default_host` string

  Legt den Datenbankserver fest, zu dem eine Verbindung aufgebaut werden soll, wenn kein Server angegeben wurde. Diese Option hat im safe mode keine Auswirkungen.

`mysql.default_user` string

  Legt den Benutzernamen fest, der bei einer Verbindung zu einer Datenbank verwendet werden soll, wenn kein Benutzer angegeben wurde. Diese Option hat im safe mode keine Auswirkungen.

`mysql.default_password` string

  Legt das Passwort fest, das bei einer Verbindung zu einer Datenbank verwendet werden soll, wenn kein Passwort angegeben wurde. Diese Option hat im safe mode keine Auswirkungen.

`mysql.connect_timeout` integer

  Verbindungstimeout in Sekunden. Auf Linuxsystemen wird dieser Timeout auch für die erste Antwort des Servers benutzt.

# Resource Typen

Innerhalb des MySQL-Moduls werden zwei Resourcetypen benutzt. Der erste ist die Verbindungskennung für eine Verbindung zum Datenbankserver, der zweite Typ ist eine Resource die auf das Ergebnis einer Anfrage/Abfrage verweist.

# Vordefinierte Konstanten

Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.

Ab PHP 4.3.0 ist es möglich zusätzliche Client-Flags bei den Funktionen mysql_connect() und mysql_pconnect() anzugeben. Die folgenden Konstanten sind definiert:

Tabelle 2. MySQL-Client Konstanten

Konstante | Beschreibung
--- | ---
MYSQL_CLIENT_COMPRESS | Benutze das Kompression Protokoll
MYSQL_CLIENT_IGNORE_SPACE | Erlaubt Leerzeichen nach Funktionsnamen
MYSQL_CLIENT_INTERACTIVE | Erlaubt Inaktivität von interactive_timeout Sekunden (anstatt wait_timeout) bevor die Verbindung geschlossen wird.

Die Funktion mysql_fetch_array() verwendet eine Konstante für die verschiedenen Arten der Ergebnisarrays. Die folgenden Konstanten sind definiert:

Tabelle 3. MySQL fetch Konstanten

Konstante | Beschreibung
--- | ---
MYSQL_ASSOC | Spalten werden in einem assoziativen Array zurückgegeben.
MYSQL_BOTH | Spalten werden sowohl als assoziatives als auch als numerisches Array zurückgegeben.
MYSQL_NUM | Spalten werden als numerisches Array zurückgegeben. Der Index beginnt bei 0, dieser entspricht dem ersten Feld des Ergebnisses.

# Begriffserläuterung

In diesem Dokument wird eine Reihe von Begriffen benutzt, die hier kurz erläutert werden sollen.

Anfrageergebnis, Ergebnis

  Die Rückgabe auf eine Anfrage an den Datenbankserver. Anfragen können sowohl Datenbankanfragen sein, die Teile des Datenbankinhalts umfassen oder Informationen über eine Datenbank oder den Datenbankserver liefern. Ist das Ergebnis eine Datenbankanfrage kann man es sich als Tabelle vorstellen, in der die Zeilen die Datensätze sind und die Felder den Spalten ensprechen. Ein Ergebnis besteht aus 0 oder beliebig vielen Datensätzen.

Ergebnis-Kennung

  Eine Referenz auf ein Ergebnis. Über diese Kennung erfolgt grundsätzlich der Zugriff auf das Ergebnis.

Datensatz

  Eine Zeile aus einem Anfrageergebnis bestehend aus den Werten der einzelnen Felder.

Datensatzzeiger

  Ein interner Zeiger auf einen Datensatz in einem Anfrageergebnis. Dieser Zeiger bestimmt auf welchen Datensatz zugegriffen wird. Der Zeiger kann sowohl implizit als auch explizit verändert werden.

Feld

  Entspricht einer Spalte im Anfrageergebnis.

Feldzeiger

  Wie Datensatzzeiger bei Zugriffen auf Felder eines Anfrageergebnisses.

Verbindungs-Kennung

  Eine Referenz auf eine Verbindung zum Datenbank-Server. Mit dieser Verbindung ist beispielsweise die Datenbank, der Benutzer, der Rechnername auf dem die Datenbank läuft und weiteres verknüpft. Jeder Zugriff auf den Server nutzt diese Kennung. Wenn die Kennung beim Aufruf einer Funktion nicht angegeben wird, so wird die aktuelle Verbindungs-Kennung verwendet, die intern von PHP verwaltet wird.

# Beispiele

Folgendes einfache Beispiel zeigt Ihnen, wie Sie sich mit einer MySQL- Datenbank verbinden, eine Anfrage ausführen, die Ergebnisse ausgeben und die Verbindung wieder trennen.

Beispiel 1. MySQL Erweiterung: ein Überblicks Beispiel
`<?php /* Verbindung aufbauen, auswählen einer Datenbank */ $link = mysql_connect("mysql_host", "mysql_user", "mysql_password") or die("Keine Verbindung möglich: " . mysql_error()); echo "Verbindung zum Datenbankserver erfolgreich"; mysql_select_db("Meine_Datenbank") or die("Auswahl der Datenbank fehlgeschlagen"); /* ausführen einer SQL Anfrage */ $query = "SELECT * FROM Meine_Tabelle"; $result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error()); /* Ausgabe der Ergebnisse in HTML */ echo "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($line as $col_value) { echo "\t\t<td>$col_value</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; /* Freigeben des Resultsets */ mysql_free_result($result); /* schliessen der Verbinung */ mysql_close($link); ?>`

Zurück | Zum Anfang | Nach vorne
msql | Nach oben | mysql_affected_rows