![]() Technikerschule Nördlingen |
Programmierung dynamischer Internetseiten
|
![]() |
Zugriff auf die MySQL-Datenbank Mit Hilfe von PHP lässt sich leicht auf Datenbanken zugreifen. Der Grund dafür ist, dass es für alle gängigen Datenbanken fertige Funktionsmodule gibt, die eine Datenbankabfrage mit wenigen Zeilen Programmcode ermöglichen. Besonders beliebt und entsprechend verbreitet im Internet ist MySQL. Die Datenbank unterliegt der General Public License, das heißt, sie ist frei und kostenlos verwendbar. Außerdem gibt es für kaum eine andere Datenbank eine so große Zahl von fertigen PHP-Funktionen. MySQL ist wie die meisten anderen kommerziellen Datenbanksysteme aufgebaut: Man kann viele einzelne Datenbanken anlegen, die wiederum in eine beliebige Zahl von Tabellen enthalten. Für den Einsatz im Internet ist MySQL auch deshalb geeignet, weil sie die Zugriffsrechte bis auf die Tabellenebene hinunter sehr verteilt festlegen lassen. In den sogenannten "Grant Tables" werden die User, deren Paßworte sowie die Zugriffsrechte verwaltet. 1 . Der Zugriff Jedes Skript, das auf eine Datenbank zugreift, muss zunächst einmal eine Verbindung zum Datenbankserver herstellen, der sich sowohl auf dem gleichen Rechner wie der das Skript ausführende Webserver befinden kann ("localhost") oder einem anderen Rechner im Inter- oder Intranet (z.B. 192.168.110.120). Beim Verbindungsaufbau müssen der Datenbank auch der Username und dessen Paßwort übermittelt werden. Die dafür verwendete Standardfunktion ist mysql_connect(), der als Argumente Strings mit Hostname, Usernamen und Passwort übergeben werden, Ist der Zugriff erfolgreich gibt die Funktion eine Integer-Zahl als Verbindungsnummer zurück. Code-Beispiel für einen Datenbankzugriff mit dem Username "dbadmin" und dem Paßwort "sesamopen", bei dem sich MySQL auf dem gleichen Rechner befindet wie der Webserver, der das Skript ausführt.
2. Die Abfrage entwickeln Bei einer Datenbankabfrage ist es möglich auf eine einzige Tabelle zuzugreifen oder auch Tabellen miteinander verknüpfen. Wir wollen uns zunächst auf eine einzige Tabelle beschränken. Es gibt im wesentlichen vier Abfragemöglichkeiten:
Beispiel für eine Tabelle mit dem Namen "mailingliste"
Will man alle Namen, die sich in der Tabelle befinden, auslesen, verwandet man den SQL-Befehl SELECT name FROM mailinglisteWill man Name und Vorname ausgeben, so lautet der Befehl SELECT name,vorname FROM mailinglisteFür die ganze Zeile genügt der Befehl SELECT * FROM mailinglisteDie auszulesenden Datensätze können mit where weiter eingegrenzt werden: SELECT * FROM mailingliste WHERE id > 2 gibt nur die Datensätze aus, deren Werte in der Spalte id einen
Wert größer als 2 enthalten. Sortiert werden die Datensätze mit SELECT * FROM mailingliste WHERE funktion='leser' ORDER BY name Neue Datensätze werden folgendermaßen hinzugefügt: INSERT INTO mailingliste (name,vorname,mail,funktion) VALUES ('Gärtner','Thomas','tg@web.de','leser')Vorhandene Datensätze können mit UPDATE mailingliste SET funktion='admin',mail='admin@domain.de' WHERE id=2 überschrieben werden. Und so wird ein Datensatz gelöscht DELETE FROM mailingliste WHERE id=2 Dies ist nur ein kleiner Teil der Sprache SQL (Structured Query Language), die nicht nur bei MySQL verwendet wird, sondern natürlich bei allen Datenbanken, die den SQL-Standard nutzen. Dies ist allerdings nur ein sehr kleiner Ausschnitt von SQL. 3. Die Abfrage ausführen Eine der Funktionen, mit dene sich Abfragen ausführen lassen ist mysql_db_query(). Als Argumente werden der Datenbankname, das SQL-Statement sowie die Verbindungsnummer benötigt. Als Ergebnis gibt die Funktion einen Zeiger auf die Ergebnisliste zurück. Im folgenden Beispiel wollen wir alle Einträge mit der Funktion "leser" unserer Tabelle "mailingliste", die sich in der Datenbank "techniker" befindet, alphabetisch nach den Nachnamen sortiert ausgeben.
4. Das Ergebnis auslesen Es gibt zahlreiche Varianten, um die Ergebnisliste oder Teile davon auszulesen. Einzelheiten dazu finden Sie im Handbuch. Die am häufigsten verwendete Funktion ist mysql_fetch_array(). Als Argument wird dieser Funktion der Zeiger auf das Ergebnis (in unserem Fall also $ergebnis) übergeben . Jede Zeile enthält mehrere Werte, die durch ihre Spaltenamen (assoziatives Array) oder Spaltennummern (numerisches Array) referenziert sind. Wenn das Ergebnis aus mehreren Datensätzen besteht, liest die Funktion mysql_fetch_array() eine Ergebniszeile in einen Array ein und setzt den Datenzeiger eine Position weiter. Um also ein Resultat mit mehreren Datensätzen auszulesen müssen wir eine Schleife verwenden. Im Beispiel werden die Daten in eine HTML-Tabelle eingelesen. Für jeden Datensatz wird eine neue Zeile (<tr>....</tr>) geschrieben.
Um sich den Aufbau des Ergbnisses anzuschauen, kann man folgende kleine Funktion verwenden
Nach dem Ende des Scripts wird die Verbindung zu Datenbank automatisch beendet, es empfielt sich aber, sie schon im Skript zu kappen
|
||||||||||||||||||||||||||||||||||||||||||||
|