mySQL-Zugriff

mySQL ist sicherlich die am häufigsten in Verbindung mit PHP eingesetzte Datenbank. Man spricht auch von LAMP- (Linux, Apache, mySQL, PHP) oder WAMP-Systemen (Windows...).

PHP bringt eine ganze Reihe von mySQL-Funktionen mit, die eine schnelle und einfach Abfrage beliebiger Datenbanken ermöglichen. Um überhaupt mit einer mySQL-Datenbank arbeiten zu können, muss als erstes unter Zuhilfename von Datenbankbenutzer und -kennwort eine Verbindung zum mySQL-Server hergestellt werden. Die Verbindung wird über ein sogenanntes Datenbank-Handle gespeichert und identifiziert:

// Verbindung herstellen
$dbh = mysql_connect($DB_SERVER, $DB_USER, $DB_PASSWD);
mysql_select_db($DB_NAME);

Sollte die Verbindung fehlschlagen, wird mysql_connect() FALSE zurückliefern.

Alle Datenbank-Abfragen werden als SQL-Query an den Server gesendet:

$query = mysql_query($sql, $dbh);

SQL-Satements, die keinen Rückgabewert zurückliefern (wie z.B. INSERT oder CREATE) brauchen nicht mittels einer Zuweisung ausgewertet werden. Während auf Seiten von PHP eher wenig Kenntnisse benötigt werden, um einigermassen effizient mit mySQL-Datenbanken arbeiten zu können, liegt die hauptanforderung sicherlich in einem guten Datenbankdesign und weitreichenden SQL-Kenntnissen.

Beispiel: man habe eine Tabelle "mitarbeiter", welche die Felder "mitarbeiter_id", "name" und "vorname" enthalte. Gwünscht wird eine HTML-formatierte Liste alle Mitarbeiter. In PHP sähe das so aus:

$query = mysql_query("select mitarbeiter_id, name, vorname from mitarbeiter", $dbh);
if(mysql_affected_rows($dbh)>0) {
  echo "<table>";
  while($row = mysql_fetch_array($query)) {
     echo "<tr><td>" . $row["mitarbeiter_id"] . "</td><td>" . $row["name"] . "</td><td>" . $row["vorname"] . "</td></tr>";
    }
  } else {
    echo "Keine Mitarbeiter :-(";
  }

mysql_fetch_array liefert einen Datensatz eines Ergebnisets als assoziatives Array zurück, wobei die Schlüssel der Name des jeweiligen Datenbankfeldes darstellen. Alternativ kann auch mysql_fetch_row() verwendet werden - dann ist das Ergebnis ein numerisches Array.

In der Regel wird das SQL-Statement über verschiedene Bedingungen oder Anwender-Eingaben im PHP-Script zusammengebaut. Je nach Aufbau der Datenbank kann der zu sendende SQL-String relativ komplex werden.

Weitere wichtige mySQL-Funktionen sind

Funktion Beschreibung
mysql_insert_id() liefert die ID des neuen Datensatzes nach einer erfolgreichen INSERT-Anweisung, die für ein Feld vom Typ AUTO_INCREMENT vergeben wurde.
mysql_result($query, $index, $feldname) liefert dern Wert des Feldes $feldname aus dem Ergebnis-Set $query an der Position $index. Hinweis: diese Funktion sollte nur dann verwendet werden, wenn das Ergebnis-Set sehr klein ist; die wesentlich leistungsfähigeren Funktion mysql_fetch_array() oder mysql_fetch_rows() liefern einen ganzen Datensatz auf einmal und sind dadurch wesentlich schneller.
mysql_error() Liefert den Fehlertext des zuletzt ausgeführten mySQL-Statements und ist damit zum Debuggen ideal geeignet.

Es ist übrigens nicht notwendig, eine per mysql_connect() geöffnete Verbindung explizit über mysql_close() zu schliessen, da bei Beendigung eines PHP-Scriptes alle offenen (nicht-persistenten) Verbindungen automatisch gekappt werden.

Tipps