MySQL Funktionen
Einführung
Diese Funktionen erlauben den Zugriff auf einen MySQL Datenbank-Server. Weitere Information zu MySQL sind unter » https://www.mysql.com/ erhältlich.
Die Dokumentation zu MySQL ist unter » https://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 PHPden 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 Installationsverzeichnis 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. Aus diesem Grund müssen Benutzer von Windows php_mysql.dll in der php.ini aktivieren und die benötigte Bibliothek libmysql.dll entweder in das Windows Systemverzeichnis kopieren oder für die Umgebungsvariable PATH verfügbar machen. Beim kompilieren benutzen Sie einfach --with-mysql=[DIR], wobei [DIR] auf das Installationsverzeichnis von MySQL verweist.
Diese MySQL Erweiterung unterstützt nicht die volle Funktionalität von MySQL Versionen höher als 4.1.0. Um die volle Funktionalität dieser Versionen zu nutzen benutzen Sie die MySQLi Erweiterung.
Falls Sie sowohl die Mysql als auch die MySQLi Erweiterung parallel installieren wollen, müssen Sie die gleiche Client-Bibliothek benutzen um jegliche Konflikte zu vermeiden.
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.
Hinweis: 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 durch Einstellungen in der php.ini beeinflusst.
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.trace_mode | "Off" | PHP_INI_ALL |
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 |
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.trace_mode boolean
-
Falls mysql.trace_mode aktiviert ist, werden Warnungen für Tabellen/Index Scans, nicht freigegebene Ergebnismengen und SQL-Fehler angezeigt. (Eingeführt in PHP 4.3.0)
- 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 compile-time Konstanten MYSQL_PORT festgelegt, in genau 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:
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. |
MYSQL_CLIENT_SSL | Benutze SSL Verschlüsselung. Dieses Flag kann nur mit Version 4.x der MySQL Client-Bibliothek oder neuer benutzt werden. Mit PHP 4 und den Windows Binaries für PHP 5 wird nur Version 3.23.x mitgeliefert. |
Die Funktion mysql_fetch_array() verwendet eine Konstante für die verschiedenen Arten der Ergebnisarrays. Die folgenden Konstanten sind definiert:
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.
Example#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);
?>
Inhaltsverzeichnis
- mysql_affected_rows — Liefert die Anzahl betroffener Datensätze einer vorhergehenden MySQL Operation
- mysql_change_user — Ändert den zurzeit angemeldeten Benutzer der aktiven Verbindung
- mysql_client_encoding — Liefert den Namen des Zeichensatzes
- 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 — Maskiert spezielle Zeichen innerhalb eines Strings für die Verwendung in einer SQL-Anweisung
- mysql_result — Liefert Ergebnis
- mysql_select_db — Auswahl einer MySQL Datenbank
- mysql_set_charset — Sets the client character set
- 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.