XCV. MySQL Funktionen
Um diese Funktionen nutzen zu können, müssen Sie PHP mit
MySQL-Unterstützung übersetzen.
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.
| 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.
Das Verhalten dieser Funktionen wird
durch Einstellungen in der php.ini beeinflusst.
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.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 |
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.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.
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.
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.
| | 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:
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.
|
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.
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);
?>
|
|
|