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
weglassen, 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 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.
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.
Legt den Datenbankserver fest, zu dem eine Verbindung aufgebaut
werden soll, wenn kein Server angegeben wurde. Diese Option
hat im safe mode keine
Auswirkungen.
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.
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.
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 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.
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_real_escape_string --
Escapes special characters in a string for use in a SQL statement,
taking into account the current charset of the connection.