Daten aus Datenbank per PHP abfragen
Wir wollen die Datenbank nun auslesen. Dazu wird eine Abfrage (eng. „query“ = Abfrage, Anfrage, Ersuchen) an die Datenbank gesendet.
$erg = $db->query("SELECT * FROM kontakte");
Ich schreibe gerne die Datenbank-Befehle groß, damit diese sich von PHP und den Daten abheben.
Über diese Anweisung sagen wir:
SELECT
auswählen*
alle DatenbankfelderFROM
aus der Tabelle mit dem folgenden Namenkontakte
uns gewählter Tabellenname.
Die Datenbank selber müssen wir hier nicht mehr angeben, da diese bereits im Vorfeld über die Anweisungen in der Datei „db.php“ bestimmt wurde.
Sollten wir nicht alle Datenbankfelder benötigen, können wir diese anstelle des Asterix *
angeben
$erg = $db->query("SELECT id, vorname, nachname FROM kontakte");
Um herauszubekommen, ob die Abfrage erfolgreich war, kann das zurückgegebene Ergebnis mit print_r()
ausgegeben werden.
<?php
require 'inc/db.php';
echo "<h1>Programm Adressbuch</h1>";
$erg = $db->query("SELECT id, vorname, nachname FROM kontakte");
print_r($erg);
?>
Als Rückgabe bekommen wir ein „Ergebnis-Objekt“.

Hier sehen wird die Anzahl der Felder (field_count) und die Anzahl der verfügbaren Datensätze (num_rows).
Wenn die Anzahl der Datensätze also mehr als Null ist, hat unsere Abfrage geklappt.
Dies können wir somit einfach abfragen über:
$erg = $db->query("SELECT id, vorname, nachname FROM kontakte");
print_r($erg);
if ($erg->num_rows) {
echo "<p>Daten vorhanden: Anzahl ";
echo $erg->num_rows;
}
Als Ergebnis des Auslesens der Datenbank sehen wir die Rückmeldung und die Anzahl der Datensätze:
Daten vorhanden: Anzahl 2
Ist ein Fehler in der SQL-Abfrage, dann erhalten wir keine Datensätze – sprich wir kommen nicht in die if
-Schleife. Hier könnte sich ein else
anbieten.
Grundsätzlich haben wir also über diese Variante keine Fehlermeldung durch die SQL-Anweisung, sondern einfach nur „es sind Daten da oder es sind KEINE Daten da“.
Wir können über folgenden Aufbau ermitteln, ob ein Fehler vorliegt.
$erg = $db->query("SELECT id, vorname, nachname FROM kontakteee")
or die($db->error);
Jetzt kommt als Meldung „table ‚adressbuch.kotakteee’ doesnt exist“. Man sieht also in welcher Datenbank welche Tabelle nicht existiert.
Table 'adressbuch.kontakteee' doesn't exist
Andere Fehlermeldungen sind bei SQL-Fehlern und Fehlern bei Spaltennamen.
Natürlich wollen wir auch diese Fehlermeldungen nicht den späteren Nutzern präsentieren.
Wenn Sie einen Fehler finden, bitte mitteilen (egal ob Schreibfehler oder inhaltlicher Fehler).
Mit Maus fehlerhafte Stelle markieren und übernehmen mit folgendem Button: