MySQL-Funktionen in PHP

Erstellt: 01.12.2005 | Aktualisiert: 01.12.2005

Eine Liste aller Funktionen mit denen MySQL aus PHP heraus angesprochen werden kann, findet man im offiziellen PHP-Manual: MySQL-Funktionen

Der Zugriff auf eine MySQL-Datenbank ist relativ einfach. Am häufigsten werden folgende Funktionen verwendet, die an dieser Stelle auch anhand einfacher Beispiele vorgestellt werden.

  • mysql_connect verbindet mit dem Datenbankserver
  • mysql_select_db wählt die Datenbank aus
  • mysql_query führt eine SQL-Anweisung aus
  • mysql_num_rows ermittelt die Anzahl der Datensätze
  • mysql_fetch_array holt die Daten in ein Array

Verbindung aufbauen und schliessen

Zum Aufbau einer Verbindung zur MySQL-Datenbank werden folgende Funktion verwendet.

  • mysql_connect('Server', 'Benutzername', 'Kennwort')
  • mysql_close(Verbindungs-Kennung)
$server = "localhost";     // MySQL-Server
$user = "benutzer";       // MySQL-Nutzer
$pass = "passwort";      // MySQL-Kennwort 

// Verbindung aufbauen
$con = mysql_connect($server, $user, $pass);
if (!$con) {
   die('keine Verbindung: ' . mysql_error());
}
// Erfolgreiche Verbindung bestätigen
echo 'Verbindung erfolgreich';

// Verbindung beenden
mysql_close($con);

In vorliegendem Beispiel wird die Verbindung zum Schluss des Code-Snippets mit der Funktion mysql_close() wieder beendet. Dies ist nicht zwingend nötig, da alle Verbindungen nach dem Abarbeiten des Scripts automatisch beendet werden.

Weitere Angaben zu den Funktionen mysql_connect und mysql_close findet ihr im PHP-Online Manual unter folgenden Links: mysql_connect und mysql_close

Datenbank wählen

Nachdem man mit einer Datenbank verbunden hat, muss man eine bestimmte Datenbank wählen. Dies geschieht mit folgender Funktion:

  • mysql_select_db(Datenbankname, Verbindungs-Kennung)
$db = "test_db";     // DB-NAMEN

$db_selected = mysql_select_db($db, $con);
if (!$db_selected) {
   die ('Keine Datenbank: ' . mysql_error());
}

Weitere Informationen zur Funktion mysql_select_db findet ihr im PHP-Manual: PHP-Manual: mysql_select_db

Verbindung und Datenbank-Kennung auslagern

Meistens werdet ihr in euren Webpräsenzen nur auf eine Datenbank zugreifen. Somit lassen sich die Verbindung zur Datenbank und die Wahl der Datenbank miteinander verknüpfen und in einer externen Datei auslagern.

Somit wird dieser Vorgang in einem Dokument zusammengefasst und kann über den PHP-Befehl require_once('Filename') im entsprechenden Script aufgerufen werden. Diese Verbindung wird dann für alle Datenbankabfragen benutzt.

Ausgelagerte Verbindungsdatei: connect.inc.php

Hauptdokument: bspdoc.php

Datensätze lesen

Für die Anfrage und das auslesen von Daten aus einer MySQL-Datenbank stehen in PHP unter anderem folgende Funktionen zur Verfügung.

  • mysql_query(Anfrage, Verbindungs-Kennung)
  • mysql_fetch_row(Ergebnis-Kennung)
  • mysql_fetch_array(Ergebnis-Kennnung, [Ergebnis-Typ])
// Einmaliges Aufrufen der MySQL-Verbindung
require_once('connect.inc.php'); 

// Ausführen einer SQL-Anfrage
$result = mysql_query("SELECT * FROM Projekte");

// Abfrage prüfen
if (!$result) {
   die('Falsche Abfrage: ' . mysql_error());
}

// Ergebnis in XHTML ausgeben
while($row = mysql_fetch_array($result)){
     echo '

'.$row["Titel"].'

';
}

Weitere Informationen zu den erwähnten Funktion findet ihr wiederum im Manual:

SQL-Befehle zum Ausgeben und Sortieren

Mit Hilfe des mächtigsten SQL-Befehls SELECT lassen sich Datensätze ausgeben. Einfachste Anweisung lautet:

SELECT * FROM Projekte

In diesem Beispiel würden alle Datensätze der Tabelle Projekte ausgegeben. Mit den zusätzlichen Anweisungen ORDER BY, LIMIT und der WHERE-Definition, lassen sich die Ergebnisse eingrenzen.

SELECT * FROM Projekte WHERE Kategorie-ID=1 ORDER BY Titel DESC LIMIT 0,5

In diesem Beispiel werden alle Projekte ausgegeben, die zur Kategorie 1 gehören. Die Ergebnisse werden geordnet nach Titel, d.h. alphabetisch und wegen der Anweisung DESC von Z nach A. Mit dem Befehl LIMIT wird definiert, dass nur die ersten fünf Datensätze angezeigt werden.

Mehr Information zu den SQL Befehlen gibts hier: SQL-Befehle

Neue Datensätze einfügen

Natürlich gibts in PHP auch die Möglichkeit mit der MySQL-Funktion mysql_query() neue Datensätze in die Datenbank zu schreiben. Die Daten stammen oft von einem XHTML-Formular.

mysql_query("INSERT INTO Projekte (field1, field2) VALUES ('value1', 'value2')")

mysql_query("INSERT INTO Projekte
(Titel, Untertitel, Abstract)
VALUES
('Tuigui-Projekt', 'Max, Jitter and more', 'Ein kurzer Text..')")
OR die(mysql_error());

Datensätze aktualisieren

Es lassen sich auch bestimmte Datensätze aktualsieren. Dies geschieht meist nach dem folgenden Prinzip.

mysql_query("UPDATE Projekte SET Titel='Neuer Titel', Untertitel='Neuer Untertitel' WHERE id='2'");

Datensätze löschen

Und es können dementsprechend auch Datensätze gelöscht werden. Dies mit der Anweisung DELETE.

mysql_query("DELETE FROM Projekte WHERE id='2'");

JOIN – Tabellen verbinden

Nun haben wir gelernt, wie wir Datensätze auselesen, einfügen, aktualsieren und löschen. Da wir unsere Daten auf verschiedene Tabellen verteilt haben, müssen wir sie auch wieder miteinander verbinden, um an die richtigen Ergebnisse zu gelangen. Der Begriff dafür heisst JOIN.

Im folgenden Beispiel wird der Fremdschlüssel Kategorie-ID aus der Tabelle Projekte, dank der Verbindung zwischen den Tabellen Projekte und Kategorien wieder aufgelöst. Die SELECT-Abfrage lautet dafür wie folgt.

SELECT Projekte.*, Kategorien.* FROM Projekte, Kategorien WHERE Projekte.Kategorie-ID=Kategorien.Kategorien-ID

Weitere Infos zur JOIN-Funktion in SQL gibts hier: JOINS

Links zum Thema