Daten per SELECT-Befehl mit PHP/MySQL aus einer Datenbank auslesen
Daten werden bei MySQL mit dem "Select"-Befehl ausgelesen. Der Befehl lässt viele Einfluss- und Selektierungsmöglichkeiten zu, die Grundsyntax lautet jedoch so:
SELECT Tabellenspalte(n) FROM Tabelle WHERE Bedingung ORDER BY Tabellenspalte;
Der erste Abschnitt ist verpflichtend, die Anweisungen WHERE und ORDER BY sind jedoch optinal (und werden später noch erklärt). Doch was bedeutet dies in der Praxis?
Nehmen wir an, wir haben folgende Beispieltabelle mit dem namen "mitarbeiter":
id | vorname | name | gehalt |
---|---|---|---|
1 | Ralf | Meier | 1000 |
2 | Sabine | Wolf | 1750 |
3 | Karl | Günther | 2000 |
Nehmen wir an, wir möchten einfach alle Informationen auslesen um sie z.B. später auf einer Webseite anzeigen zu können. Wie geht man vor? Dazu schauen wir uns am besten folgendes Beispiel an (Wir gehen davon aus, dass eine Verbindung bereits hergestellt ist):
<?php $id=array(); $name=array(); $vorname=array(); $gehalt=array(); $sql="SELECT * FROM mitarbeiter"; $ergebnis=mysqli_query($verbindung, $sql) or die(mysqli_error($verbindung)); while ($row = mysqli_fetch_object($ergebnis)) { array_push($id,$row->id); array_push($name,$row->name); array_push($vorname,$row->vorname); array_push($gehalt,$row->gehalt); } ?>
Nun haben wir alle Informationen ausgelesen und in in Arrays gespeichert und könnten sie mit den üblichen Befehlen für Textausgabe und Arrays auch auf der Webseite präsentieren. Der Befehl SELECT * sorgt hier dafür, sämtliche Spalten auszulesen. Alternativ hätte man die Auswahl natürlich begrenzen können, so hätte ein "SELECT id,name FROM mitarbeiter" nur id und name ausgelesen. Doch wie kann man z.B. nur Mitarbeiter auslesen lassen, deren Gehalt z.B. höher als 1500€ ist? Hierfür wird der WHERE-Befehl gebraucht und die Abfrage leicht angepasst:
<?php [...] $sql="SELECT * FROM mitarbeiter WHERE gehalt>1500"; [...] ?>
Wie man sieht, ist es im Grunde ganz einfach. Mit der Anweisung "ORDER BY" kann man jetzt die Ausgabe auch noch sortieren lassen.
<?php [...] $sql="SELECT * FROM mitarbeiter WHERE gehalt>1500 ORDER by gehalt ASC"; [...] ?>
Dies bewirkt, dass die Ausgabe nun nach der Spalte Gehalt aufsteigend sortiert wird (ASC). Möchte man eine absteigende Sortierung, genügt es, "ASC" einfach durch "DESC" zu ersetzen.