Author: Progman, zuletzt bearbeitet von progman @ 2005/03/13 16:11:12
Bitte beachten Sie, dass die Tutorialkapitel zusammenhängen. Wenn sie direkt auf ein Kapitel verlinkt wurden müssen Sie gegebenenfalls die vorherigen Kapitel auch lesen. Achten Sie beim lesen darauf, dass Sie kein Kapitel überspringen.
Aufbau von MySQL
1. Grundlayout von MySQL
Wir haben jetzt gelernt, wie man Informationen von einem Formular oder von der URL in ein Script bringt. Wir können diese Informationen ausgeben, bearbeiten, verarbeiten und darauf reagieren. Doch was wir nicht wissen ist, wie und wo man diese Informationen abspeichert. Es bringt ja nix, wenn wir die Daten ausgeben, wenn sie sofort wieder verloren sind. Deshalb müssen wir eine Möglichkeit finden, diese Daten zu speichern. Dies geht in einer einfachen Textdatei. Eleganter ist es aber, diese Daten in eine Datenbank zu speichern. Da die meisten Provider zusätzlich zu PHP eine MySQL Datenbank anbieten, werde ich auch die Benutzung von MySQL-Datenbank durchnehmen. In anderen Datenbanksystemen ist die Funktionsweise und die Sprache ähnlich. Aber es geht ja nicht nur darum die Sprache zu lernen, sondern das Konzept der relationalen Datenbank zu verstehen, dass eine Datenbank keine reine Textdatei ist, sondern eine Möglichkeit ist Daten elegant abzuspeichern und diese auch wieder einfach auszulesen.
Eine MySQL-Datenbank besteht einmal aus einer gewissen Anzahl von Datenbanken. Die kann der Endbenutzer nicht verwalten, dies macht der Admin des Servers. Auf einem Server, wo mehrere Homepages liegen, kann der Admin mehrere Datenbank erstellen. Jeder User hat dann seine eigene Datenbank in der er dann arbeiten kann. Der User erfährt dann auch, z.B. per Email oder im Adminbereich, welche Datenbank er benutzen soll. Der momentane Aufbau einer Datenbank sieht dann so aus.
Abb.: Datenbanken in MySQL
In jeder Datenbank kann dann der User rumhantieren wie er lustig ist. Zu jeder Datenbank gehören Tabellen. Erst in den Tabellen, die am Anfang leer sind, können dann die Informationen gespeichert werden. Jede Tabelle hat einen Namen, z.b. News oder Clanwars. Und jede Tabelle besitzt Spalten. Man muss sich das dann wie in einer Tabellenkalkulation wie Excel vorstellen. Nur heißen die Spalten in MySQL nicht A, B, C sondern haben bestimmte Namen. Eine Tabelle hat auch nicht unendlich Spalten, sondern nur ganz bestimmte vorher festgelegte Spalten. Die Spalten in einer Tabelle News könnten Inhalt, Titel, Datum und Author heißen. Dies könnte man grafisch so darstellen.
Abb.: Datenbank mit Tabellen
In einer Tabelle können dann die Daten gespeichert werden. Diese werden dann in Form von Datensätzen gespeichert. Jeder Datensatz steht dann für einen Eintrag in einer Tabelle. In Excel würde da dann eine Reihe sein. Dies sieht dann so aus.
Abb.: Tabelle mit einem Eintrag
Eine Tabelle mit nur einem Datensatz macht wenig sinn. In einer Tabelle können mehrere Datensätze gespeichert werden. Dies ist ja auch Logisch. Denn wir haben ja nicht nur eine News, sondern mehrere News, nicht nur ein gespielten Clanwar, sondern mehrere gespielten Clanwars. In Excel würde man jetzt Reihe für Reihe füllen. Die Anzahl der Datensätze in einer Tabelle ist eigentlich Unbegrenzt. Die einzige Grenze ist der Festplattenplatz und ggf. Admineinstellungen an der MySQL-Datenbank. Mehrere Datensätze in einer Tabelle kann man sich dann so vorstellen.
Abb.: Mehrere Datensätze in einer Tabelle
2. In die MySQL-Datenbank einloggen
Um mit einer MySQL-Datenbank zu arbeiten muss man sich in dieser einloggen. Man will ja nicht das jeder User auf dem Server zugang zu den Datenbanken und Tabellen hat. Logischerweise hat der Admin die meisten Rechte und kann überall rumschnüffeln. Die User haben nur Zugang zu ihren eigenen Datenbanken, können aber in dieser alles machen was sie wollen. In den anderen Datenbanken können sie nicht einsehen.
3. MySQL in PHP
In PHP gibt es eine ganze Menge von MySQL-Funktionen. So viele, dass es sogar eine eigene Manual-Rubrik MySQL Functions gibt. In PHP werden dabei 4 wichtige Daten über die MySQL-Datenbank benötigt.
-
Host - Mit dieser Angabe müssen wir PHP angeben, wo sich der MySQL-Server befindet. Dies kann ein anderer Rechner im Rechenzentrum sein, z.B. db32.puretec.de, kann aber auch der Webserver selber sein. Wenn es der Webserver selber ist muss man localhost angeben. Statt Hostnamen kann man natürlich auch IPs angeben.
-
Username - Da man sich bei dem MySQL-Server anmelden muss, muss man auch ein Benutzernamen senden, mit dem man sich in der MySQL Datenbank anmelden möchte.
-
Password - Damit nicht jeder beliebige einfach einen anderen Benutzernamen benutzen kann, muss man auch beim Login das Passwort mit angeben. Es ist klar, dass dieses Passwort nicht in die Hände Anderer geraten darf.
-
Database bzw. Datenbank - Alle Tabellen sind üblicherweise in nur einer Datenbank gespeichert. Deshalb muss man angeben in welcher Datenbank man arbeiten will.
Da all diese Daten sich im Laufe des Scripts nicht verändern, sollte man diese Daten in Konstanten schreiben. Somit sind sie auch in jeder Funktion vorhanden (im Gegensatz zu Variablen). Beispielnamen sind MYSQL_HOST, MYSQL_USER, MYSQL_PASS und MYSQL_DATABASE.
<?php
// config.php
error_reporting(E_ALL);
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'progman');
define('MYSQL_PASS', 'foobar');
define('MYSQL_DATABASE', 'db24543253');
?>
Bei der Wahl der Konstanten muss man aufpassen, dass man keine existierenden Konstanten benutzt. Diese Konstanten definieren wir in der inc/config.php bzw. in der inc/konstanten.php. Spätere Kapitel beziehen sich auf diese Konstanten.
Die Login-Daten kriegt man vom Admin des Servers via Email oder findet man irgendwo im Kundenlogin. Aussuchen kann man sich die Daten eher selten, es sei denn man ist der Besitzer der MySQL-Datenbank.
4. phpMyAdmin
Es gibt ein PHP-Projekt genannt phpMyAdmin. Mit diesem Projekt, welches man es auf dem Webserver installiert, kann man seine Datenbank recht gut verwalten. Man kann direkt MySQL-Querys eingeben und Tabellen mit hilfe von Eingabemasken bearbeiten/erstellen/löschen.
Üblich ist es phpMyAdmin in einem Unterverzeichnis phpmyadmin/ zu speichern, damit man mit http://www.url.de/phpmyadmin/ auf die Datenbank zugreifen kann. Aber vergessen sie bloß nicht ein HTTP-AUTH-Schutz z.B. mittels einer .htaccess Datei, denn sonst hat jeder der http://www.url.de/phpmyadmin/ vollen Zugriff auf die Datenbank. Dies war bei ProSieben der Fall. Siehe heise.de Newsbeitrag ProSieben-Benutzerdaten standen offen.
Fragen zum aktuellen Thema
- Woraus besteht eine MySQL-Datenbank?
-
Eine MySQL-Datenbank besteht aus Datenbanken, Tabellen, Datensätzen und einem Login-System.
- Welche Daten brauchen sie für ihr PHP Script?
-
Für ihr PHP Script brauchen sie die Angaben Host, Username, Password und Database / Datenbank. Diese Daten sollten sie dann in Konstanten speichern.