Kurs: SQL

13.1 Ein kleines SQL-Beispiel

Nehmen wir an, Sie sind unterwegs und wollen jemandem eine aktuelle Liste Ihrer Produkte zeigen. Sie setzen sich in ein Internet-Café und rufen ein PHP-Skript auf, das Sie auf Ihrem Web-Server gespeichert haben und welches die Produktliste im Browser ausgibt.


Abb. 13.1 Ausgabe der Produktliste im Browser

Hier sehen Sie den Quellcode des Skriptes bzw. den Inhalt der Datei produkte.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Produktliste</TITLE>
</HEAD>
<BODY>

<?php
  if (!mysql_connect("localhost", "james", "bond007")) {
    die ("Verbindung zum Server fehlgeschlagen.");
  }
  if (!mysql_select_db("php_sql_shop")) {
    die ("Datenbank nicht gefunden.");
  }

  $read_cursor = mysql_query("SELECT * FROM produkte");

  while($result = mysql_fetch_array($read_cursor)) {
    echo $result["beschreibung"] . " " . $result["kaufpreis"] . "<br>\n";
  }

  mysql_close();
?>

</BODY>
</HTML>

Sehen sie nun, was vom Browser an HTML-Code empfangen wird. Dazu müssen Sie im Internet Explorer die Menüleisten "Ansicht/Quelltext anzeigen" aktivieren (im Netscape Navigator "Ansicht/Seitenquelltext"). Es öffnet sich dadurch ein Fenster mit dem HTML-Quellcode der Seite:


Abb. 13.2 Quelltext des in Abb. 13.1 angezeigten HTML-Dokuments

Nur der Text im Skript wird ausgegeben, der entweder außerhalb der Klammerung <?php ... ?> steht, oder der innerhalb der Klammerung mit der Funktion echo() erzeugt wurde. An der Kennung <?php erkennt der PHP-Interpreter, dass nun PHP-Anweisungen folgen und führt diese aus. Die Kennung ?> beendet einen PHP-Teil.

Die Anweisung echo() gibt eine Zeichenkette aus. Sie sehen am Ende jeder Zeile auch den Tag <BR> aus HTML, der im Browser als Zeilenumbruch interpretiert wird. In unserem Skript wird jede Ausgabe mit einem "\n" beendet, dies ist das Steuerzeichen für einen Zeilenumbruch. Dieser hat hier keine Auswirkung bei der Betrachtung des HTML-Dokuments mit einem Browser, er dient lediglich dazu, den HTML-Quelltext ordentlich zu formatieren.

Gehen wir das Skript durch. Es ist denkbar einfach: Mit der Funktion mysql_connect() wird eine Verbindung mit dem MySQL-Server aufgebaut. "localhost" ist die Serverbezeichnung und bedeutet hier, dass MySQL auf demselben Host läuft wie der Webserver. "james" ist der Benutzername und "bond007" das Passwort für den MySQL-Server. Die Funktion mysql_select_db() wählt eine Datenbank aus.

Bei beiden Funktionen wird das Ergebnis daraufhin überprüft, ob sie erfolgreich ausgeführt wurden. Bei einem Fehlschlag geben beide Funktionen false zurück. Dies nutzen wir aus, indem wir dies mit einer if-Anweisung testen und gegebenenfalls das Skript mit einer Fehlermeldung abbrechen. Dafür verwenden wir die Funktion die(), die eine Zeichenkette ausgibt und dann das Skript sofort beendet.

Die Funktion mysql_query() liefert einen Cursor, der durch den im Parameter stehenden SQL-Befehl definiert ist. $read_cursor heißt die Variable, in der wir den Cursor speichern. Anschließend sehen Sie eine while-Schleife, die mit mysql_fetch_array() aus dem Cursor $read_cursorpro Schleifendurchgang eine Zeile liest und in der Variablen $result speichert. Innerhalb des Schleifenrumpfes wird mit der Anweisung echo() für jede Zeile die Beschreibung und der Kaufpreis ausgegeben. Die Funktion mysql_close() schließt die Datenbankverbindung zum Server.

Abgesehen von der Kürze des Skripts sollte Ihnen mit Ihrer bisherigen Erfahrung einiges aufgefallen sein:

PHP kann innerhalb eines HTML-Dokuments eingebettet werden. Die Syntax ähnelt stark der Syntax von Java, die Sie in der letzten Lerneinheit kennen gelernt haben (Java und PHP lehnen sich beide stark an C an; deshalb die Ähnlichkeit).