In diesem Tutorial möchte ich auf erklären wie man mittels PHP, Daten in eine MySQL-Datenbank schreibt und sie wieder abfragt.
Inhalt
1. Verbindung zur Datenbank herstellen
2. Daten in eine Datenbank schreiben
3. Daten aus der Datenbank abfragen
1. Verbindung zur Datenbank herstellen
Wir haben mehrere Möglichkeiten eine Verbindung zur Datenbak herzustellen. Zum einen kann man die Verbindung zur Datenbank in jeder PHP-Datei definieren und zum anderen eine zentrale Datei erstellen die man dann nur noch includiert. Da es üblich und auch übersichtlicher ist eine extra Datei zu erstellen möchte ich diese Variante hier auch vorstellen. In unserem Beispiel heist sie dbconfig.php.
Hier also ein Beispiel wie solch eine Datei aussehen könnte:
1 |
<?php |
Mehr ist es garnicht! Mit mysql_conect stellen wir die Verbindung her und wählen anschließend unsere Datenbank mit mysql_select_db aus.
2. Daten in eine Datenbank schreiben
Nun wollen wir unsere Datenbank mal füllen. Dazu legen wir eine Datei namens register.php an.
Die einfachste Sache wäre folgendes Beispiel:
1 |
<?PHP |
28 |
<!-- Ausgabe wenn die Registrierung erfolgreich war --> |
3. Daten aus der Datenbank abfragen
Wollen wir jetzt eine Übersicht haben welche User sich bereits registriert haben dann können wir dies mit folgender Abfrage tun. Dazu erstellen wir wieder eine neue Datei mit dem Namen userout.php.
1 |
<?php include ("dbconfig.php"); // Includieren der dbconfig.php |
4. Sicherheitshinweise (SQL-Injection)
Dieser Teil stammt aus Wikipedia.
In PHP steht zu diesem Zweck für fast jede verwendete Datenbank eine Escape-Funktion bereit. Nur die Oracle-Anbindung besitzt keine solche Escape-Funktion, hingegen können dort Prepared Statements verwendet werden, was beispielsweise bei der beliebten MySQL-Datenbank erst mit den Funktionen von MySQLi[1] möglich geworden ist.
Ein Beispiel für MySQL: anstatt
1 |
$abfrage = "SELECT spalte1 |
sollte Folgendes verwendet werden:
1 |
$abfrage = "SELECT spalte1 |
Eine weitere Möglichkeit ist die Typumwandlung von Übergabeparametern.
1 |
$abfrage = "SELECT spalte1 |
Ab PHP 5.1 sollten PHP Data Objects für Datenbankabfragen verwendet werden.
1 |
$dbh->exec("INSERT INTO REGISTRY (name, value) |
Oder als Prepared Statement:
1 |
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); |
Häufig wird aus Bequemlichkeit einfach die Konfigurationsoption „magic_quotes_gpc“ auf „on“ gestellt, mit der von außen kommende Benutzereingaben automatisch maskiert werden. Doch dies ist nicht empfehlenswert. Denn manche nicht selber programmierte Skripte setzen eigenständig Funktionen wie etwa addslashes()[2] oder das bereits weiter oben genannte mysql_real_escape_string()[3] ein. Das heißt, dass bereits allen relevanten Zeichen in den Benutzereingaben durch so genannte Magic Quotes[4] ein Backslash vorangestellt wurde und nun durch die Escape-Funktion erneut ein Backslash vorangestellt wird. Somit werden die Benutzereingaben verfälscht und man erhält beispielsweise anstatt eines einfachen Anführungszeichens ein Anführungszeichen mit vorangestelltem Backslash (\"). Auch aus Gründen der Portabilität sollte bei der Entwicklung von Anwendungen auf diese Einstellung verzichtet und stattdessen alle Eingaben manuell validiert und maskiert werden, da nicht davon ausgegangen werden kann, dass auf allen Systemen dieselben Einstellungen vorherrschen oder möglich sind.
Ich hoffe dieses Tutorial hat euch weitergeholfen!





