Jetzt wird’s wild – MySQL- Datenbank in PHP einbinden

Endlich habe ich wieder etwas Zeit gefunden meine Tutorial- Serie zur Website- Gestaltung weiterzuführen. Heute geht es um die Einbindung einer MySQL-Datenbank aus PHP heraus. Wie baut man eine Verbindung auf und wie bekommt man Daten aus einer Tabelle? Und wie kann man Daten in eine Tabelle schreiben? Das sind die Fragen, die ich mit meinem kleinen MySQL Tutorial beantworten will.

MySQL mit PHP nutzen

Als Datenbank verwende ich bei meinem Tutorial MySQL, weil das der Quasistandard bei jedem guten Websapceanbieter ist. Jeder der sich mithilfe meiner Anleitung Xampp installiert hat, kann bereits auf phpMyAdmin zugreifen. Das ist ein Tool, um eine MySQL- Datenbank über den Webbrowser zu verwalten. Also um Datenbank und Tabellen anzulegen, zu editieren und zu löschen.

Los gehts!

1. Datenbank und Tabelle einrichten

In MySQL existieren verschiedenen Datenbanken, wobei jede Datenbank mehrere Tabellen beinhalten kann. In PHP wählt man dann eine Datenbank aus und arbeitet mit den Tabellen, wo die Daten hinein kommen. Für das Tutorial soll es um das Anlegen eines Telefonbuchs gehen, in dem man neue Einträge speichern kann und nach bestimmten Namen suchen kann.

  1. Zunächst ruft man phpMyAdmin auf, dies geschieht über die Url „http://localhost/phpMyAdmin“
  2. Dann legt man eine neue Datenbank „test“ an
  3. Anschließend öffnet man diese Datenbank in phpMyAdmin und
  4. legt eine neue Tabelle „telefonbuch“ mit 3 Spalten an

Im nächsten Schritt stellt man die Eigenschaften der einzelnen Spalten ein (z. B. den Datentyp).
Die 3 Spalten für unser Tutorial heißen

  • id: eindeutige Nummer des Telefonbucheintrags
  • name: der Name des Kontakts
  • nummer: die Nummer des Kontakts

Zu beachten: Man sollte sich natürlich in der richtigen Datenbank (linker roter Pfeil: „test(0)“) befinden, wenn man die Tabelle „telefonbuch“ anlegen möchte. Außerdem muss man der Spalte „id“ als Primärschlüssel (Primary Key) eintragen. Dies bedeutet, dass jeder Telefonbucheintrag (also die Nummer) nur 1x in der Tabelle vorkommen darf. Um die Spalte „id“ bei jedem neuem Eintrag zu inkrementieren (=weiterzählen zu lassen), wählt man noch das Häkchen bei „AUTO_INCREMENT“.
Der Tabellenkommentar ist optional und kann auch weggelassen werden. Anschließend muss man die die neue Tabelle speichern und erhält dann so eine Ansicht.

2. Verbindung zur Datenbank aufbauen

Jetzt wo die Datenbank und Tabelle angelegt wurde, geht es im nächsten Schritt darum, eine Verbindung zur Datenbank mit PHP aufzubauen.

Das geht mit folgenden PHP-Befehlen:

//Zugangsdaten als Konstanten
define(‚DB_HOST‘,’localhost‘);
define(‚DB_USER‘,’root‘);
define(‚DB_PASSWORD‘,“);
define(‚DB_NAME‘,’test‘);
define(‚DB_TABLE‘,’telefonbuch‘);

//Verbindung zum Datenbank-Server aufbauen
$connection=mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(„Verbindungsaufbau zu „.DB_HOST.“ nicht möglich!“);

//Datenbank auswählen
mysql_select_db(DB_NAME, $connection) or die(„Konnte die Datenbank „.DB_NAME.“ nicht auswählen.“)

3. Neuen Eintrag in MySQL- Tabelle speichern

Nachdem die Verbindung zur DB funktioniert, müssen wir natürlich erst einmal neue Kontakte in das Telefonbuch speichern.
Das funktioniert so:

$sql = sprintf(„INSERT INTO %s VALUES(0,’%s‘,’%s‘)“,
DB_TABLE,
$_POST[’name‘],
$_POST[’nummer‘]);
mysql_query($sql);

Natürlich müssen die Daten zuvor in ein Formular eingegeben worden sein. Mit dem Befehl sprintf() kann man einen String maskieren, d.h. man schreibt keine Variablen direkt in den String, sondern nur Platzhalter (%s= String, %d = Integer, usw.). Diese ersetzt man dann anschließend durch die jeweiligen Variablen. Der MySQL-Befehl wird dann mit mysql_query($sql) ausgeführt.

4. Einträge aus MySQL- Tabelle auslesen (mit Filter)

Hat man die Tabelle mit Einträgen gefüllt, kann man sich entweder alle oder nur bestimmte Einträge ausgeben lassen. Dazu nutzt man das WHERE- Attribut um eine Einschränkung (z. B. Suche nach einem Namen) in die Auswahl zu bringen.

$filter = „“;
if(isset($_GET[’search‘])) {
$filter = “ WHERE name LIKE ‚%“.$_GET[’suche_name‘].“%'“;
}
$sql = sprintf(„SELECT * FROM %s %s“,
DB_TABLE,
$filter);
$q = mysql_query($sql);
while($item = mysql_fetch_assoc($q)) {
echo ‚<p>‘.$item[‚id‘].‘. ‚.$item[’name‘].‘ hat die Nummer ‚.$item[’nummer‘].'</p>‘ ;
}

Die Variable $filter wird nur gesetzt, wenn eine entsprechende Suchanfrage über eine Formular gestellt wurde. Mittels einer einfachen while- Schleife kann man durch die Ergebnisse laufen und sich die Einträge anzeigen lassen. Der Befehl mysql_fetch_assoc($q) gibt dabei ein assoziatives Array zurück, mit den Spaltennamen der Tabelle als Schlüssel.

Komplettes Script zum Download

Das komplette Script, um eine MySQL- Tabelle in PHP anzusprechen, könnt ihr hier downloaden. Evtl. müsst ihr bei euch noch die Zugangsdaten für die MySQL-Datenbank anpassen.

> Zum Download des MySQL- Scripts

Das obige Script behandelt nur die einfachste Vorgehensweise beim Einbinden einer MySQL-Datenbank in PHP. Natürlich gibt es inzwischen weitaus besser und strukturiertere Methoden (z. B. PHP Data Objects, kurz PDO) um auf eine Datenbank zuzugreifen. Dabei werden auch sicherheitsrelevante  Aspekte betrachtet.

Ressourcen

MySQL-Befehlsreferenz
Die erste Anlaufstelle für die Bedeutung von MySQL- Befehlen und Ihre Verwendung mit einigen Beispielen.

Ein Gedanke zu „Jetzt wird’s wild – MySQL- Datenbank in PHP einbinden“

  1. Wie kann man mehrere Spalten verwenden, z.B um zwei Nummern zu hinterlegen, die dann auch durchsucht werden?

Kommentare sind geschlossen.