Im letzten Kapitel haben wir SQL-Befehle direkt in PHPmyAdmin
eingegeben - sobald wir einen neuen Befehl eingegeben haben wurde
die vorherige Tabelle wieder gelöscht.
Nun erstellen wir eine eigene Schnittstelle zur mySQL-Datenbank.
Verbindung zur Datenbank erstellen
Als erstes brauchen wir eine Verbindung zum MySQL-Datenbankserver.
Dazu benötigst du die Funktion mysql_connect(),
die eine Verbindung zum Datenbankserver erstellt und einen User
anmeldet.
$db_verbindung = mysql_connect("server",
"user", "pwd");
Die Funktion erwartet drei Parameter, die für die Verbindung
notwendig sind. Der erste Parameter ist der Name des Servers,
auf dem die MySQL-Datenbank installiert ist. Alternativ zu einem
Hostnamen kann auch eine gültige IP-Adresse angegeben werden.
Ist die Verbindung erfolgreich, dann gibt die Funktion mysql_connect()
einen Verbindungshandle auf die Datenbank zurück. War der
Vorgang nicht erfolgreich, gibt die Funktion FALSE
zurück.
<?php
$server = "localhost"; //oder 127.0.0.1
$user = "root"; //man sollte nur bei einer Testumgebung den user root verwenden!
$pass = "****"; //falls kein Passwort angegeben wurde bleibt diese Angabe leer: $pass = "";
$db_verbindung = mysql_connect($server, $user, $pass);
if($db_verbindung) {echo "mySQL-Verbindung erfolgreich!";}
?>
 
Besser ist es jedoch, die Zugangsdaten einfach in eine zweite
PHP-Datei auszulagern und diese mit dem include-Befehl wieder
einzubinden:
<?php
$db_verbindung = false;
inlcude("db_connect.php");
$db_verbindung = mysql_connect($server, $user, $pass);
if($db_verbindung)
{
echo "<hr>mySQL-Verbindung erfolgreicht!</hr>;
}
else
{
echo "Verbindung fehlgeschlagen!";
}
?>
Listing 1: verbindung.php
<?php
$host = "localhost";
$user = "root";
$pwd = "dummies";
?>
 
Listing 2: db_connect.php
Um ganz sicherzugehen, solltest du aber dies include-Datei in
ein Verzeichnis kopieren, das von außen über das Web
nicht erreichbar ist.
Das Gegenstück zu mysql_connect() ist die Funktion mysql_close(),
die die Verbindung zum Datenbankserver wieder schließt.
mysql_close($db_verbindung);
Die Datenbankverbindung nutzen
Die Datenbankverbindung ermöglicht uns nun auf alle Datenbanken
für die wir die Berechtigung auf diesen Server besitzen zuzugreifen.
Mit dieser Anweisung kannst du nun eine Datenbankanfrage (SQL)
an eine Datenbank senden.
| Funktion |
Beschreibung |
| mysql_query() |
Die Funktion sendet eine SQL-Anfrage an die aktuelle Datenbank |
| mysql_db_query() |
Die Funktion sendet eine SQL-Anfrage an eine Datenbank,
die als Parameter übergeben wird. |
$ergebnisrelation = mysql_query($query, $db_verbindung);
$query enthält die SQL-Anweisung und $db_verbindung enthält
das Verbindungs-Handle zur Datenbank.
Anweisungen wie INSERT, UPDATE oder DELETE geben TRUE zurück,
wenn der Zugriff erfolgreich war.
<?php
inlcude("db_connect.php");
$db_verbindung = mysql_connect($host, $user, $pass);
if($db_verbindung)
{
echo "<b>mySQL-Verbindung hergestellt!</b>;
}
$query = "SELECT * FROM db_kursanmeldung.tbl_kurse";
$ergebnisrelation = myssql_query($query, $db_verbindung);
if ($ergebnisrelation) {echo "SQL-Anweisung erfolgreich ausgeführt!";}
?>
Übung MB 1
Erstelle oben dargestellte Connection. Was wird ausgegeben?
|
Sobald die SQL-Anweisung eine SELECT-Anfrage ist, wird das Ergebnis
als eine Tabelle im Speicher abgelegt. Das heißt diese Tabelle
"befindet" sich in der Variable $ergebnisrelation.
Auswertung von Ergebnisrelationen im Speicher
Um diese Daten aus der Variablen auslesen zu können gibt
es mehrere Möglichkeiten:
| Funktion |
Beschreibung |
| mysql_fetch_row() |
Holt einen Datensatz aus der Ergebnisliste im Speicher als
nummerisches Array. |
| mysql_fetch_array() |
Holt einen Datensatz aus der Ergebnisliste im Speicher als
assoziatives Array und nummerisches Array. |
| mysql_fetch_assoc() |
Holt einen Datensatz aus der Ergebnisliste im Speicher nur
als assoziatives Array |
| mysql_result() |
gibt den Inhalt eines Feldes aus der Ergebnisliste zurück |
| mysql_affected_rows() |
gibt die Anzahl der von der letzten Operation betroffenen
Reihen zurück. |
| mysql_free_result() |
Gibt den Speicher der Ergebnisliste frei |
Die drei wichtigsten Funktionen im Umgang mit Ergebnislisten
im Speicher sind die Funktionen mysql_fetch_row(), mysql_fetch_array()
und mysql_fetch_assoc(). Alle drei holen eine Reihe (Datensatz)
(nicht Spalte!) der Ergebnisliste aus dem Speicher. Der erste
Aufruf gibt die erste Reihe zurück, der zweite Aufruf die
zweite Reihe und so weiter ...
Die Funktion mysql_fetch_row() ist die einfachste der drei Möglichkeiten.
Sie erwartet als einzigen Parameter die Variable die die Ergebnisrelation
speichert und gibt ein nummerisches Array des aktuellen Datensatzes
zurück.
$liste = mysql_fetch_row($ergebnisrelation);
echo $liste[1];
Um jetzt alle Zeilen der Ergebnisrelation auszugeben bietet sich
natürlich eine Schleife an die uns die Arbeit abnimmt.
<?php
$server = "localhost";
$user = "root";
$pass = "****";
$db = "db_kursanmeldung";
$db_verbindung = mysql_connect($host, $user, $pass);
mysql_select_db($db, $dbh); //mittels mysql_selct_db kann eine Datenbank ausgewählt werden
$query = "SELECT * FROM tbl_user";
$ergebnisrelation = myssql_query($query, $db_verbindung);
echo "<table border=1>";
while ($i = mysql_fetch_assoc($ergebnisrelation))
//solange etwas in der Variable $ergebnisrelation steht wird
//ein Datensatz nach dem anderen ausgelesen.
{
echo "<tr>";
foreach ($i as $var) //damit Lesen wir nun die einzelnen Felder des Arrays aus
{
echo "<td>$var</td>";
}
echo "</tr>";
}
echo "</table>";
?>
 
Übung MB 2
1. Erstelle eine Liste aller User.
2. Erstelle eine Liste aller Kurse, sortiert nach dem Beginndatum.
Jetzt wirds schwierig:
Hinweis: Wenn du noch nicht sehr geübt in SQL bist
und dich diese Anweisungen überfordern: Erstelle doch
die gleiche Datenbank in ACCESS, erstelle mithilfe der Entwurfsansicht
die Abfragen und kopiere die SQL-Anweisung in dein PHP-Skript.
3. Erstelle eine Liste, in der alle Kurse des Monats Oktober
04 angezeigt werden. Für jeden Kurs sollen die angemeldeten
User gezeigt werden. |
·:: Zurück weiter ::·