Ich   Entwicklung   Lösungen Apache PHP mySQL  
 

mySQL-Funktionen von PHP

Installation / Verbindung zwischen PHP und MySQL

PHP 4 hat die Unterstützung für mySQL bis 4.0 bereits eingebaut, es gibt Funktionen speziell für mySQL. Im Gegensatz zu neueren Versionen von PHP und MySQL müssen Sie sich um nichts kümmern, sondern können einfach loslegen.

Allerdings haben Sie keinen Zugriff auf die neuen MySQLi-Funktionen, die erst ab PHP 5 und MySQL 4.1 möglich sind.

Verbindung zum Datenbank-Server herstellen

Mit der Funktion mysql_connect() müssen Sie eine Verbindung zu mySQL herstellen, bevor Sie weitere Operationen durchführen können.

resource mysql_connect (
    [string server
    [, string username
    [, string password
    [, bool new_link
    [, int client_flags]]]]]);

Diese Zeile aus dem PHP Manual verrät uns, dass die Funktion einen Ressourcen-Verweis zurückgibt. Diesen können wir in einer Variable speichern, oder überprüfen, ob er exisitert.

Der optionale Parameter new_link existiert seit PHP 4.2; er gibt an, dass, wenn mysql_connect() innerhalb des selben Skriptes zweimal mit den selben Parametern aufgerufen wird, eine zweite Verbindung aufgebaut wird. Standardmäßig wird der Link zur ersten Verbindung (entspricht false zurückgegeben.

Als Beispiel wollen wir Verbindung zu unserem lokal installierten mySQL-Server aufnehmen:

$link = mysql_connect ( "localhost" , "root" , "test" );

Wenn Sie Benutzername und Passwort geändert haben, müssen Sie Ihre Zugangsdaten entsprechend ändern.

Wenn Sie den Port des mySQL-Servers geändert haben (Standard: 3306), müssen Sie diesen wie folgt angeben:

$link = mysql_connect ( "localhost:3307" , "root" , "test" );

Da $link den Wert false besitzt, wenn keine Verbindung hergestellt werden konnte, können wir das ausnutzen, um die Ausführung eines Skriptes abzubrechen, wenn die Datenbankverbindung unbedingt notwendig ist:

if(!($link = mysql_connect ( "localhost" , "root" , "test" ))) {
    die("Keine Verbindung zur Datenbank.");
}

Eleganter geht das, indem man ausnutzt, dass bei einer OR-Verknüpfung der zweite Ausdruck nicht überprüft wird, wenn der erste true ist:

$link = mysql_connect ( "localhost" , "root" , "test" ) || die("Keine Verbindung zur Datenbank.");

Eine Datenbank auswählen

Bevor wir nun ein Query an mySQL senden können, müssen wir erst mitteilen, mit welcher Datenbank wir arbeiten möchten:

mysql_select_db("versuch", $link);

Der zweite Parameter ist der Verweis auf unsere gerade geöffnete Verbindung. Er kann weggelassen werden; dann wird die zuletzt geöffnete Verbindung benutzt.

Einen SQL-Query absetzen

Mit der Funktion mysql_query() können Sie normale SQL-Queries an mySQL senden:

mysql_query("UPDATE kontakte SET homepage='intermitto.net' WHERE homepage=''", $link);

Der zweite Parameter ist wieder die oben geöffnete Verbindung. Auch hier kann dieser Parameter weggelassen werden; PHP nutzt dann die zuletzt geöffnete Verbindung.

Die Funktion gibt im Normalfall einen booleschen Wert zurück, der angibt, ob das Query ausgeführt werden konnte. Dies können wir ausnutzen, um zu überprüfen, ob alles wie gewünscht funktioniert hat:

if( mysql_query("UPDATE kontakte SET homepage='intermitto.net' WHERE homepage=''")) {
    echo "Erfolgreiches UPDATE.";
} else {
    echo "UPDATE gescheitert.";
}

Bei SELECT-Queries wird statt eines booleschen Wertes ein Ressourcen-Verweis zurückgegeben, über den das Ergebnis der Abfrage später abgerufen werden kann:

$ergebnis = mysql_query("SELECT * FROM kontakte");
Hinweis

Das Ergebnis wird gepuffert, daher empfehle ich dringend, größere Ergebnisse mit mysql_free_result() aus dem Puffer zu löschen, sobald diese nicht mehr benötigt werden.

Ergebnisse aus SELECTs auswerten

Nun wird echo $ergebnis; nicht dazu führen, dass die Ergebnisse angezeigt werden; $ergebnis ist lediglich ein Verweis, die Ausgabe wäre etwas wie Resource id #3. Um die Daten aus diesem Verweis zu lesen, müssen wir mysql_fetch_assoc benutzen (es gibt noch weitere, die ähnliches bewirken; auf diese werde ich hier nicht weiter eingehen).

mysql_fetch_assoc() holt einen Datensatz aus dem Verweis und gibt ein assoziatives Array mit den Spaltenwerten zurück.

Ein vollständiges Beispiel: die Tabelle kontakte habe die Spalten id, name, mail und homepage.

$ergebnis = mysql_query("SELECT * FROM kontakte");
$daten = mysql_fetch_assoc($ergebnis);
echo "<br />Name: ".$daten["name"];
echo "<br />Mail: ".$daten["mail"];
echo "<br />Homepage: ".$daten["homepage"];

Was ist aber, wenn mehrere Datensätze gefunden werden (was ja normal ist) und SIe alle Datensätze anzeigen möchten? Das ist sehr einfach; mysql_fetch_assoc() holt immer den nächsten Datensatz aus dem Ergebnis. Wir können ausnutzen, dass mysql_fetch_assoc() den Wert false zurückgibt, wenn kein Datensatz mehr vorhanden ist:

$ergebnis = mysql_query("SELECT * FROM kontakte");
while($daten = mysql_fetch_assoc($ergebnis)) {
    echo "<p>Datensatz: ".$daten["id"];
    echo "<br />Name: ".$daten["name"];
    echo "<br />Mail: ".$daten["mail"];
    echo "<br />Homepage: ".$daten["homepage"];
    echo "</p>";
}
Zusatzinfo

Mehr Informationen zu mySQL-Funktionen finden Sie im PHP Manual. Auf http://www.php.net/manual/de/ref.mysql.php finden Sie einen Überblick über alle mySQL-Funktionen und Links zu Detailbeschreibungen.

MySQL mit PHP 5 weiter

phpMyAdmin: Installation weiter

URL: www.intermitto.net/mysql/php/alt/
© 2004-05 Jens Becker - intermitto.net v5.1
Letzte Änderung: 23.08.2005

Home - Kontaktformular - Downloads - Suche und Sitemap - Impressum
Entwicklung - Problemlösungen - Tutorials: Apache PHP mySQL

user  pass