Websiteentwicklung: PHP: MySQL
Aus Wikibooks
[Bearbeiten] Kurze Einführung in MySQL
MySQL ist eines der populärsten Datenbanksysteme der Welt, nicht zuletzt, da es ein Open Source Projekt ist. Egal ob privat oder geschäftlich - heute ist MySQL bereits über elf Millionen (Quelle: http://www.mysql.com/company/factsheet.html) mal installiert. Das System ist einfach aufgebaut, sehr schnell und die Grundzüge sind vergleichbar einfach zu verstehen. MySQL wird von Counter, über Gästebücher und Suchfunktionen, bis hin zu komplexen Content Management Systemen oder Online-Shops verwendet.
Eine einzelne Datenbank kann man sich als Sammlung von Tabellen vorstellen. Jede Tabelle hat wie gewohnt Zeilen und Spalten. Die Spalten können benannt werden, aber die Datensätze in der Tabelle (also die Zeilen) sind nicht geordnet. In einer Zelle können Zahlen, Text-Strings und auch Boolean Werte gespeichert werden (binäre Dateien, wie beispielsweise Bilder können ebenfalls gespeichert werden - davon wird aber abgeraten). An dieser Stelle wird gezeigt wie es mit PHP möglich ist Tabellen zu erstellen und diese dann mit Daten zu füllen.
Die Kommunikation mit einer MySQL-Datenbank erfolgt über die Abfragesprache
SQL.
MySQL ist an sich eine
relationale Datenbank, allerdings müssen die Beziehungen (Relationen) zwischen den Tabellen programmtechnisch hergestellt werden. Die Funktionen des Fremdschlüssels stehen nur eingeschränkt zur verfügung.
[Bearbeiten] MySQL in PHP
PHP bietet eine Vielzahl an Funktionen, um mit dem Datenbanksystem zu kommunizieren. Hier werden nur die gebräuchlichsten erklärt:
mysql_connect([string Server[, string Benutzername[, string Benutzerkennwort]]])- Erstellt eine neue Verbindung zum MySQL-Server. Dabei müssen der Server und optional der Benutzername und das Benutzerkennwort angegeben werden.
mysql_select_db(string database_name[, resource link_identifier])- Nach einem Verbindungsaufbau wählt diese Funktion die Datenbank aus, in der wir mit PHP arbeiten wollen.
mysql_query(string Anfrage[, resource Verbindungs-Kennung])- Einer der wichtigsten Befehle: Sendet eine Anfrage an den MySQL-Server. Mit diesen Anfragen können Datensätze eingefügt, ausgelesen und gelöscht werden. Außerdem können Sie hier die Tabellen erstellen, bearbeiten und löschen.
mysql_error([resource link_identifier])- Diese Funktion liefert die Fehlermeldung zurück, falls eine andere MySQL-Funktion einen Fehler erzeugt hat bzw.falsezurücklieferte, was auf einen Fehler hinweist. Siehe dazu http://faq.php-q.net/#mysql.
mysql_fetch_assoc(resource Ergebnis-Kennung)- Liefert den aktuellen Datensatz, der unter der Ergebniskennung aufgerufen wurde. Ein weiterer Aufruf dieser Funktion liefert den nächsten Datensatz der Ergebnistabelle. Wenn kein Datensatz mehr vorhanden ist wirdfalsezurückgeliefert.
mysql_close([resource Verbindungs-Kennung])- Schließt die Verbindung zum MySQL-Server mit der angegebenen Verbindungs-Kennung. Diese Kennung ermöglicht es, mehrere Verbindungen auf einmal zu erstellen. Wird die Verbindungs-Kennung weggelassen, wird die zuletzt geöffnete Verbindung geschlossen.
mysql_real_escape_string(string unescaped_string[, resource link_identifier])- Maskiert einen String zur sicheren Verwendung in einer Abfrage. Sonder- und Steuerzeichen wie " (Anführungszeichen) werden maskiert um eine Manipulation des SQL-Ausdrucks durch externe Eingaben zu verhindern.
[Bearbeiten] Beispiel
<?php // Verbindung erstellen, bei Fehler diesen ausgeben: $link = mysql_connect('localhost', 'user', 'passwort') or die(mysql_error()); // Datenbank auswählen mysql_select_db('test') or die(mysql_error()); // Tabelle adresse mit den Spalten id, name, strasse, ort und tel erstellen: (adress_id ist Primärschlüssel) mysql_query('CREATE TABLE adresse ( adress_id INT UNSIGNED AUTO_INCREMENT , name VARCHAR(100) , strasse VARCHAR(100) , ort VARCHAR(100) , tel VARCHAR(20) , PRIMARY KEY (adress_id) ) ') or die(mysql_error()); // Datensatz einfügen, bei Fehler diesen ausgeben: mysql_query('INSERT INTO adresse(name, strasse, ort, tel) VALUES ( "Hans Meier", "Bahnhofstrasse 1", "4391 Testingen", "010 100 01 01") ') or die (mysql_error()); // Datensatz auslesen: $daten = mysql_query('SELECT name, tel, ort FROM adresse ') or die (mysql_error()); // Datensatz in array speichern: $daten = mysql_fetch_assoc($daten); // Tabelle löschen: mysql_query('DROP TABLE adresse'); // Verbindung schliessen: mysql_close($link); // Array ausgeben: echo "<pre>"; var_dump($daten); echo "</pre>"; ?>
Achtung: Wenn mehr als ein Datensatz ausgewählt wird, läuft die Speicherung in einem Array anders. Denn es wird jeweils nur immer eine einzige Zeile in das Array gespeichert.

