PHP MySQL
Diese Seite drucken Hier können Sie uns eine Emaiil schreiben zurück Zur Übersicht vorwärts Links | Archiv   Letzte Änderungen 28.09.2021
     
PHP-Einstieg: PHP & MySQL
> Teil 2 > Teil 3

Teil 1

von Andreas Ahlenstorf

PHP wird erst so richtig interessant, wenn man erste Webapplikationen wie ein Gästebuch oder ein Forum damit programmiert. Dazu müssen Daten gespeichert. Das lässt sich über eine Textdatei oder mit einer Datenbank realisieren.

Wer sich noch an den ersten Teil des PHP-Einstiegs erinnern kann, weiss, dass damals ein Counter erstellt wurde, dessen jeweils aktueller Stand in einer Text-Datei gespeichert wurde. Eine praktische Sache und schnell eingerichtet. Wer allerdings mehr als eine simple Zahl oder einen Ausdruck speichern will, kommt kaum um den Gebrauch einer Datenbank herum.

 

In Datenbanken werden Informationen (Daten) einerseits gesammelt, andererseits verwaltet, kontrolliert und miteinander in Beziehung gebracht. Der Sinn besteht darin, eine Information möglichst nur ein einziges Mal abzuspeichern und die Information schnell abrufen zu können. Dies wird Datenbanksystem genannt. Beispiele für ein derartiges Datenbanksystem sind Microsoft Access, Oracle, der Microsoft SQL-Server oder das Open-Source-Projekt MySQL.

Alle diese Datenbanken haben etwas gemeinsam, sie werden über die Datenbanksprache SQL oder einen speziellen Treiber, welcher SQL in die Sprache der jeweiligen Datenbank übersetzt, angesprochen. Und SQL selber lässt sich wieder über PHP, ASP oder ColdFusion ansprechen.

MySQL
Wer eine Datenbank für seine PHP-Scripte braucht, wird in der Regel MySQL als Datenbanksystem wählen. Dies hat vier Gründe: MySQL ist kostenlos, speziell auf die Bedürfnisse im Internet zugeschnitten, fast jeder Provider bietet MySQL-Datenbanken an und last but not least ist MySQL besonders einfach über PHP anzusprechen.

Um effektiv mit MySQL arbeiten zu können, ist zu erst einmal eine Erweiterung der Entwicklungsumgebung notwendig. Wer seinen Apache-Webserver mit PHP schon installiert hat, kann auf der MySQL-Homepage eine aktuelle Version für das jeweilige Betriebssystem herunterladen. Die Windows-Version wird direkt inklusive Installer und grafischem Interface geliefert, wobei eine Konfiguration von PHP oder Apache nach der Installation nicht nötig ist.

Erste Schritte
MySQL ist nun installiert und aktiviert. Als nächstes hat man sich zu entscheiden, wie man MySQL verwalten will. Das grafische Interface bietet nur eine Überblick über die aktuellen Einstellungen und Datenbanken, verändern lässt sich aber damit nicht viel. Wer eine Datenbank erstellen will, um erste Daten zu speichern, kann entweder den MySQL-Monitor oder ein php-basierendes Administrationstool verwenden. Wobei der MySQL-Monitor eher etwas für Fortgeschrittene und Liebhaber von Kommandozeilen ist. Die php-basierenden Administrationstools sind dagegen ziemlich einfach und intuitiv zu bedienen. Das wohl berühmteste und beste Administrationstool ist phpMyAdmin von Tobias Ratschiller.

phpMyAdmin verwenden
Die Installation des Adminstrationstools verläuft relativ unproblematisch. Nach dem Download muss man das Archiv nur entpacken und die Konfigurations-Datei nach eigenen Wünschen editieren. Die Dateien sollten sich dann in einem Ordner befinden, wo man über Browser und lokalen Webserver zugriff hat. Beispielsweise http://localhost/phpMyAdmin/

So dürfte der erste Blick auf phpMyAdmin in etwa aussehen.

Die erste Datenbank ist schon vorhanden und nennt sich mysql. Diese bitte auf keinen Fall löschen, sonst ist MySQL nachher unbrauchbar.

Um erste Daten zu speichern, muss eine neue Datenbank erstellt werden (Create new database). Bei der Namensgebung empfiehlt es sich alles klein zu schreiben, der Name darf keine Leerzeichen, Minuszeichen (-) oder ähnliche Sonderzeichen enthalten. Einzig der Unterstrich (_) darf verwendet werden.

Wenn die Datenbank angelegt ist, muss eine Tabelle erstellt werden, die dann mit den eigentlich Inhalten gefüllt werden kann.

MySQL beim Hoster
Zum Abschluss des ersten Teils noch ein Wort zu MySQL beim Hoster. Viele Hoster unterstützen MySQL. Es ist aber oft erst bei den etwas teureren Paketen verfügbar. Näheres dazu dann in den FAQ des Providers, wo auch erklärt wird, wie man zu einer Datenbank kommt.

Um die einzelne MySQL-Datenbank auf dem Server verwalten zu können, ist phpMyAdmin das Verwaltungstool erster Wahl. Die Installation unterscheidet sich kaum von der lokalen Variante. Allerdings eine Warnung: Das Verzeichnis in dem phpMyAdmin liegt, muss gut geschützt verwerden. Ideal ist eine Passwortsperre mit .htaccess. Ansonsten können Unbefugte die Daten löschen oder verändern. (aa)


 

Teil 2

von Andreas Ahlenstorf

PHP wird erst richtig interessant, wenn man erste Webapplikationen wie zum Beispiel ein Gästebuch oder ein Forum programmieren kann. Dazu müssen Daten gespeichert werden. Das kann in Textdateien oder in einer Datenbank geschehen. Teil 2 klärt darüber auf, wie man die dafür notwendigen Tabellen anlegt und mit Daten füllt.

Wie im 1. Teil erwähnt, werden Daten in Tabellen gespeichert, die später in einer Datenbank zusammengefasst werden. Zu erst wurde die Datenbank angelegt, nun müssen die entsprechende Tabellen erstellt werden. Um das Ganze weniger abstrakt zu gestalten, könnte man sich etwa vorstellen, dass man einen kleinen Klickzähler für Downloads oder Links programmieren möchte.

Nun sollte man den localhost starten, phpMyAdmin aufrufen und eine Datenbank anlegen, sofern das noch nicht geschehen ist. Der Name spielt keine Rolle, hier haben wir ‚misc’ verwendet.

Die Möglichkeiten, eine Tabelle zu erstellen, sind vielfältig. Die einfachsten Varianten finden sich in manchen vorgefertigten Scripts, die gleich ein Setup-Script beinhalten, welches Tabellen ohne spezielle Eingriffe des Benutzers selber anlegt. Anspruchsvoller wird es, wenn man von Hand jede Spalte einzeln definieren muss.

Der erste Schritt besteht darin, dass der Tabelle ein Name gegeben wird. Man bestimmt dann, wie viele Felder (Spalten) sie enthalten soll. Dazu sollte man sich gut überlegen, was man eigentlich tun will.

Hier wollen wir uns an einem Download- oder Linkzähler versuchen. Dazu müssen eine ID, ein Link und die Hits gespeichert werden. Benötigt werden also 3 verschiedene Felder. Nach einem Klick auf „Go“ wird es interessant.

Tabelle anlegen

Datentypen
Man sieht sich mit einer Tabelle konfrontiert, die aus 10 verschiedenen Spalten besteht, von denen zumindest ein Teil ausgefüllt werden muss. Es geht m Wesentlichen darum, die Datentypen zu definieren, also zu bestimmen, wie ein String abgespeichert werden muss. Diese Datentypen lassen sich grob in drei verschiedene Gruppen unterteilen:

  • Numerische Typen
  • Zeichentypen
  • Vermischte Typen

Die Gruppen bestehen aus diversen einzelnen Typen, die alle ihre eigene Aufgabe haben. Dies ist nötig, um für Geschwindigkeit zu sorgen. Wer es genau wissen möchte, folge diesem Link zur Fernuni Hagen. Allerdings ist ein intensives Studium nicht von Nöten, denn immer, wenn in einem Artikels eine Tabelle angelegt werden muss, gibt es die passende Strukturangabe mit dazu.

Um zu unserem Linktracker zurückzukommen, hier die Angaben für das Anlegen der Tabelle:

Field Type Lenght Attributes
Null Default Extra
id blob     Not Null    
url blob     Not Null    
hits varchar 5   Not Null    

Wie man mit PHP auf die Datenbank zugreift, werden wir in einem späteren Teil besprechen. (aa)


 

Teil 3

von Andreas Ahlenstorf

PHP wird erst richtig interessant, wenn man erste Webapplikationen wie zum Beispiel ein Gästebuch oder ein Forum programmieren kann. Dazu müssen Daten gespeichert werden. Das kann in Textdateien oder in einer Datenbank geschehen. In Teil 3 wird gezeigt, wie man mit PHP auf eine Datenbank zugreifen kann.

Nachdem wir unsere Vorbereitungen getroffen haben (siehe Teil 1 und 2), können wir mit PHP auf die Datenbank zugreifen. Da es sich bei MySQL um eine externe Anwendung handelt, muss zuerst eine Verbindung geschaffen werden.

Die Verbindung zur MySQL-Datenbank
Eine Verbindung zu MySQL herzustellen ist relativ einfach, da PHP von Haus aus einen kompletten Befehlssatz zum Umgang mit MySQL enthält. Da diese Befehle einfach gehalten sind, kommen wir mit wenigen Codezeilen aus.

Um auf einzelne Tabellen zugreifen zu können, sind zwei Schritte nötig. Zuerst muss die Verbindung zum Datenbank-Host hergestellt und dann die richtige Datenbank ausgewählt werden.

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");

Dieses Code-Beispiel stellt die Verbindung zum MySQL-Host her. Dazu werden drei verschiedene Angaben benötigt:

  • $mysqlhost steht für den Name des Servers, auf dem MySQL läuft. Er lautet in den meisten Fällen ‚localhost'.

  • $mysqluser steht für den Namen des Users, der auf den MySQL-Host zugreift. Diese Daten erfährt man entweder vom Provider oder man hat sie bei der Installation von MySQL selbst definiert.

  • $mysqlpwd steht für das Passwort, das benötigt wird, um auf den MySQL-Host zugreifen zu können.

Falls die Verbindung nicht zu Stande kommt, wird die Meldung "Verbindungsversuch fehlgeschlagen" angezeigt, was durch die () ausgelöst wird.

Als nächstes, gilt es die entsprechende Datenbank auszuwählen. Dazu dient folgende Funktion:

mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

Der Code wählt die Datenbank, welche mit der Variable $mysqldb angegeben wird. Um beim Beispiel aus Teil 1 und Teil 2 zu bleiben, müsste nun der Wert auf ‚misc' gesetzt werden. Weiter wird die Variable $connection benötigt, welche die Verbindung beinhaltet, die im ersten Code-Beispiel hergestellt wurde.

Die Datenbankverbindung sieht dann folgendermassen aus:

<?php

$mysqlhost="localhost"; // MySQL-Host angeben
$mysqluser="root"; // MySQL-User angeben
$mysqlpwd=""; // Passwort angeben
$mysqldb="misc"; // Gewuenschte Datenbank angeben

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");

mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

?>

Diesen Code speichert man am besten in einer Datei, beispielsweise mysql.connect.php, ab, damit man sie wieder verwenden kann. Das spart Code und Nerven, wenn man Fehler suchen muss.

Daten einfügen
Nun können wir damit beginnen, Daten einzufügen. Die Datenbank wird zwar per PHP angesprochen, die Instruktionen an die Datenbank aber werden in SQL formuliert. SQL versteht jede SQL-Datenbank, dazu gehören neben MySQL auch PostgreSQL und der MS SQL-Server und auch Access.

Als erstes gilt es die Tabelle anzusprechen, in welche die Daten einfügt werden sollen. Um beim Beispiel aus Teil 2 zu bleiben, fügen wir einen Datensatz in die Tabelle ‚links' ein und zwar bestehend aus einer ID ("php") und einem URL ("http://www.php.net/").

<?php

$id="php";
$url="http://www.php.net";

require("mysql.connect.php");

mysql_query("INSERT INTO links VALUES('$id','$url','')") or die(mysql_error());

?>

Was passiert? Als erstes werden die beiden Variablen $id und $url definiert. Diese können auch aus einem Formular stammen, um das Beispiel einfach zu halten, werden sie direkt im Script definiert. Als nächstes wird mittels require() die Datei geladen, welche die Verbindung zum MySQL-Host herstellt. Dann werden die Daten in die Tabelle geschrieben. Diese Code-Zeile sollte aber näher erklärt werden:

mysql_query("INSERT INTO links VALUES('$id','$url','')") or die(mysql_error());

mysql_query() steht für einen Befehl an den MySQL-Host und dient unter anderem dazu, Daten in der Datenbank abzuspeichern und auszulesen. Als nächstes kommt ein SQL-Befehl, der dafür sorgt, dass die Daten in die Tabelle 'links' geschrieben werden. Dabei wird in die erste Spalte die Variable $id geschrieben, in die zweite $url und die dritte Spalte wird leer gelassen. Abschliessend wird ein Fehlerabfänger eingebaut, der die Fehlermeldungen des MySQL-Hosts ausgibt, sofern solche Fehler auftreten.

Wie man den Inhalt ausliest, erklären wir im vierten und letzten Teil. Nun noch die Codes im Überblick. (aa)

mysql.connect.php

<?php

$mysqlhost="localhost"; // MySQL-Host angeben
$mysqluser="root"; // MySQL-User angeben
$mysqlpwd=""; // Passwort angeben
$mysqldb="misc"; // Gewuenschte Datenbank angeben

$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die("Verbindungsversuch fehlgeschlagen");

mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");

?>

add.php

<?php

$id="php";
$url="http://www.php.net";

require("mysql.connect.php");

mysql_query("INSERT INTO links VALUES('$id','$url','')") or die(mysql_error());

?>

Teil 4 haben wir vom Autor leider nicht mehr erhalten.