LXIII. 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://www.mysql.com/documentation/ 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 beim Aufruf von configure ermöglichen Sie den Zugriff auf MySQL über PHP. Falls Sie den Pfad zu MySQL nicht angeben, verwendet PHP die internen MySQL-Client Bibliotheken. Seit PHP4 ist die Unterstützung für MySQL standardmäßig immer aktiviert; falls Sie die Konfigurationsoption wrglassen, werden die internen MySQL-Bibliotheken genutzt. Benutzer die MySQL auch in anderen Anwendungen nutzen möchten (zum Beispiel: PHP3 und PHP4 als simultane Apache-Module oder auth-mysql) sollten immer den Pfad zu MySQL mit der Option -- with-mysql=/pfad/zu/mysql festlegen. Diese Angabe zwingt PHP die Client-Bibliotheken zu nutzen, die von MySQL installiert wurden. Diese Vorgehensweise vermeidet jegliche Konflikte.

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.

Laufzeit Konfiguration

Das Verhalten der MySQL Funktionen wird durch Einträge in der globalen Konfigurationsdatei php.ini beeinflusst.

Tabelle 1. MySQL Konfigurations-Optionen

NameStandardVeränderbar
mysql.allow_persistent"On"PHP_INI_SYSTEM
mysql.max_persistent"-1"PHP_INI_SYSTEM
mysql.max_links"-1"PHP_INI_SYSTEM
mysql.default_portNULLPHP_INI_ALL
mysql.default_socketNULLPHP_INI_ALL
mysql.default_hostNULLPHP_INI_ALL
mysql.default_userNULLPHP_INI_ALL
mysql.default_passwordNULLPHP_INI_ALL
mysql.connect_timeout"-1"PHP_INI_SYSTEM
Weitere Details und die Definition der PHP_INI_* Konstanten sind unter ini_set() zu finden.

Beschreibung der Konfigurations-Optionen

mysql.allow_persistent boolean

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

mysql.max_persistent integer

Spezifiziert die maximale Anzahl von persistenten MySQL Verbindungen pro Prozess.

mysql.max_links integer

Legt die maximale Anzahl von MySQL Verbindungen (incl. persistenter Verbindungen) pro Prozess fest.

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 MYSQL_PORT

mysql.default_socket string

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

mysql.default_host string

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

mysql.default_user string

Spezifiziert den Benutzernamen, 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

Spezifiziert das Passwort, 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

KonstanteBeschreibung
MYSQL_CLIENT_COMPRESSBenutze das Kompression Protokoll
MYSQL_CLIENT_IGNORE_SPACEErlaubt Leerzeichen nach Funktionsnamen
MYSQL_CLIENT_INTERACTIVEErlaubt Inaktivität von interactive_timeout Sekunden (anstatt wait_timeout) bevor die Verbindung geschlossen wird.
MYSQL_CLIENT_SSLBenutze SSL (verschlüsseltes Protokoll)

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

KonstanteBeschreibung
MYSQL_ASSOC Spalten werden in einem assioziativen Array zurückgegeben.
MYSQL_BOTH Spalten werden sowohl als assioziatives 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.
MYSQL_STORE_RESULT Erzwingt die Zwischenpeicherung des Ergebnisses von MySQL
MYSQL_USE_RESULT Das Ergebnis von MySQL wird nicht zwischengespeichert.

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!");
    print "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");

       // Ausgabe der Ergebnisse in HTML
       print "<table>\n";
       while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
           print "\t<tr>\n";
           foreach ($line as $col_value) {
               print "\t\t<td>$col_value</td>\n";
           }
           print "\t</tr>\n";
       }
       print "</table>\n";

       // Freigeben des Resultsets
       mysql_free_result($result);

       // schliessen der Verbinung
       mysql_close($link);
?>

Inhaltsverzeichnis
mysql_affected_rows --  Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation
mysql_change_user --  Ändert den zur Zeit angemeldeten Benutzer der aktiven Verbindung
mysql_character_set_name -- Gibt den Namen des Zeichensatzes zurück
mysql_close -- Schließt eine Verbindung zu MySQL
mysql_connect -- Öffnet eine Verbindung zu einem MySQL-Server
mysql_create_db -- Anlegen einer MySQL-Datenbank
mysql_data_seek -- Bewegt den internen Ergebnis-Zeiger
mysql_db_name -- Liefert Ergebnisdaten
mysql_db_query -- Absetzen einer Anfrage an die Datenbank
mysql_drop_db -- Löschen einer Datenbank
mysql_errno --  Liefert die Nummer einer Fehlermeldung einer zuvor ausgeführten MySQL Operation
mysql_error --  Liefert den Fehlertext der zuvor ausgeführten MySQL Operation
mysql_escape_string --  Maskiert einen String zur Benutzung in mysql_query.
mysql_fetch_array --  Liefert einen Datensatz als assoziatives Array, als numerisches Array oder beides
mysql_fetch_assoc --  Liefert einen Datensatz als assoziatives Array
mysql_fetch_field --  Liefert ein Objekt mit Feldinformationen aus einem Anfrageergebnis
mysql_fetch_lengths --  Liefert die Länge eines jeden Feldes in einem Ergebnis
mysql_fetch_object -- Liefert eine Ergebniszeile als Objekt
mysql_fetch_row -- Liefert einen Datensatz als indiziertes Array
mysql_field_flags --  Liefert die Flags eines Feldes in einem Anfrageergebnis
mysql_field_len --  Liefert die Länge des angegebenen Feldes
mysql_field_name --  Liefert den Namen eines Feldes in einem Ergebnis
mysql_field_seek --  Setzt den Ergebniszeiger auf ein bestimmtes Feldoffset
mysql_field_table --  Liefert den Namen der Tabelle, die das genannte Feld enthält
mysql_field_type --  Liefert den Typ eines Feldes in einem Ergebnis
mysql_free_result -- Gibt belegten Speicher wieder frei
mysql_get_client_info -- Liefert MySQL Clientinformationen
mysql_get_host_info -- Liefert MySQL Host Informationen
mysql_get_proto_info -- Liefert MySQL Protokollinformationen
mysql_get_server_info -- Liefert MySQL Server Informationen
mysql_info --  liefert Informationen über die zuletzt ausgeführte Anfrage zurück
mysql_insert_id --  Liefert die ID einer vorherigen INSERT-Operation
mysql_list_dbs --  Auflistung der verfügbaren Datenbanken auf einem MySQL Server
mysql_list_fields -- Listet MySQL Ergebnisfelder auf
mysql_list_processes -- Zeigt die MySQL Prozesse an
mysql_list_tables -- Listet Tabellen in einer MySQL Datenbank auf
mysql_num_fields -- Liefert die Anzahl der Felder in einem Ergebnis
mysql_num_rows -- Liefert die Anzahl der Datensätze im Ergebnis
mysql_pconnect --  Öffnet eine persistente Verbindung zum MySQL Server
mysql_ping -- Ping a server connection or reconnect if there is no connection
mysql_query -- Sendet eine Anfrage an MySQL
mysql_real_escape_string --  Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection.
mysql_result -- Liefert Ergebnis
mysql_select_db -- Auswahl einer MySQL Datenbank
mysql_stat -- Zeigt den momentanen Serverstatus an
mysql_tablename -- Liefert den Namen einer Tabelle
mysql_thread_id -- Zeigt die aktuelle Thread ID an
mysql_unbuffered_query -- Sendet eine SQL Anfrage an MySQL, ohne Ergebniszeilen abzuholen und zu puffern.