PHP-MySQL-Tutorial – Dynamische Webseiten mit PHP unter Verwendung einer MySQL-Datenbank

PHP (PHP: Hypertext Preprocessor) eignet sich ganz besonders zur Erzeugung dynamischer Internetseiten, da der Source-Code, der zur Generierung des dynamischen Seiteninhalts nötig ist, direkt in der jeweiligen HTML-Datei gespeichert werden kann. Dies ist auch der Hauptunterschied zu anderen Sprachen, die zur Erzeugung dynamischer Internetseiten verwendet werden. Perl-Skripte beispielsweise müssen im Allgemeinen in einem speziellen Verzeichnis auf dem Webserver gespeichert werden, welches in der Webserver-Konfiguration angegeben werden muss. Somit sind alle Skripte zentral gepeichert und nicht direkt in die Struktur der Webseite integriert. Web-Hoster bieten schon in einem relativ günstigen Preissegment PHP-fähige Hosting-Pakete an, während Hosting-Angebote mit Perl oder Python meist etwas teurer angeboten werden. Auch eine Schnittstelle zu MySQL-Datenbanken ist bei PHP bereits enthalten, so dass man sich nicht um ein passendes Modul, welches zusätzlich installiert werden müsste, kümmern muss.

Aufgrund der Tatsache dass MySQL unter der GPL veröffentlicht wird und damit kostenlos zur Verfügung steht, erfreut sich diese Datenbank beim Einsatz in Web-Anwendungen großer Beliebtheit. Hinzu kommt, dass MySQL wohl eine der performantesten Datenbanken ist, die derzeit auf dem Markt existieren. Da stört es kaum, dass einige Features ihrer „großen” Konkurrenten – wie etwa Trigger, Sub-Selects, Stored Procedures oder Views – derzeit noch nicht oder nur in rudimentärer Form implementiert sind. Darüber hinaus ist eine MySQL-Datenbank in vielen preiswerten Hosting-Paketen diverser Web-Hoster bereits enthalten. Diese Faktoren führen dazu, dass die Kombination PHP und MySQL so häufig zur Entwicklung von dynamischen Internetseiten genutzt wird.

PHP & MySQL am Beispiel einer einfachen Linkverwaltung

Der Zugriff auf eine MySQL-Datenbank soll nun an dem einfachen Beispiel einer Linkverwaltung demonstriert werden. Ein Benutzer kann damit seine gesammelten Links auf seinem Web-Server verwalten und dadurch von einem beliebigen Rechner mit Internetzugang aus auf diese Linksammlung zugreifen. Neben der Möglichkeit Links hinzuzufügen sollen sie geändert, gelöscht und in Listenform angezeigt werden können. Diese Aufgaben sollen mit Hilfe von Parametern, die dem Skript übergeben werden, von einer einzigen PHP-Seite erfüllt werden. Dabei wird der Einfachheit halber auf eine Authentifizierung verzichtet, so dass im Prinzip jeder die Daten lesen und ändern kann. Eine Nutzerauthentifizierung kann im einfachsten Fall durch eine .htaccess-Datei realisiert werden.

Erzeugung der Datenbanktabelle

Zunächst benötigen wir also eine Datenbank-Tabelle – wir werden sie sinnigerweise links nennen –, in der die Eigenschaften eines Links gepeichert werden können. Die zu speichernden Eigenschaften werden in Form von Tabellenfeldern angelegt. Neben einem eindeutigen Schlüssel (link_id), der für jeden einzelnen Link automatisch vergeben werden soll, benötigen wir ein Feld zur Speicherung der URL (link_url) und ein weiteres für den Link-Titel (link_title). Darüber hinaus soll ein Feld einen optionalen Kommentar (link_comment) für den jeweiligen Link speichern. Für die Link-ID wählen wir eine zehnstellige, vorzeichenlose Integerzahl, wobei dieser primäre und eindeutige Schlüssel beim Einfügen eines Datensatzes automatisch vergeben werden soll. In Varchar-Feldern der maximalen Länge von einhundert Zeichen werden die URL und der Link-Titel gespeichert. Zusätzlich benötigen wir einen eindeutigen Index (unique key) auf das Feld, welches die Link-URL speichert, da wir für jede URL nur einen Eintrag speichern wollen. Die folgenden Zeilen geben den für die Erstellung der Tabelle nötigen SQL-Befehl an.

  -- SQL-Skript zur Erzeugung der Datenbanktabelle für das PHP-MySQL-Tutorium
  CREATE TABLE links (
    link_id int (10) unsigned NOT NULL auto_increment,
    link_url varchar (100) NOT NULL default '',
    link_title varchar (100) NOT NULL default '',
    link_description text,
    PRIMARY KEY (link_id),
    UNIQUE KEY links_index1783 (link_url)
  );

Die Tabelle kann entweder mit Hilfe von phpMyAdmin – was meist von Web-Hostern zum Zugriff auf die Datenbank angeboten wird – oder mit einem anderen Datenbank-Client erzeugt werden.