PHP/MySQL - PHP/MySQL Grundlagen - Suchen
1. Die Abschnitte
2. Zum besseren Verständnis
... zeige ich euch jetzt mal, was bei einer pisseligen Abfrage wie SELECT * FROM produkt;
passiert. Und warum das so wichtig
bei der Kombination mit PHP ist. Zunächst schauen wir uns mal das Ergebnis an.
+----+--------------+--------+--------+---------+
| id | produkt | preis | nummer | hs_link |
+----+--------------+--------+--------+---------+
| 1 | Schlagbohrer | 5.95 | 1000-1 | 1 |
| 2 | Zement | 19.95 | 1000-2 | 2 |
| 3 | Kneifzange | 199.95 | 1000-3 | 3 |
| 4 | Brecheisen | 49.95 | 1000-4 | 3 |
| 5 | Hammer | 19.95 | 1000-5 | 4 |
+----+--------------+--------+--------+---------+
5 Rows in set (0.05 sec)
Hier werden einfach alle Datensätze der Tabelle produkt
ausgegeben. Das ist offensichtlich weithin bekannt. Was aber viele
Anfänger nicht wissen, ist das Folgende. Der Client ist in der Lage, das Ergebnis in einem Rutsch zu erfassen, PHP nicht. Und das aus
gutem Grund. Denn wie will man obige Daten weiterverarbeiten?
3. Daten holen
Darum passiert jetzt Folgendes. Mit mysql_query
schickt man eine Anfrage zum Server. Der gibt zunächst mal nur eine Referenz
zurück, die man auch als Ressource bezeichnet. Daher sollte man hier tunlichst mit einer Variable arbeiten, sonst geht Erstere flöten,
also $ref = mysql_query ($query)
. Vorrausetzung ist natürlich ein syntaktisch korrektes SQL-Statement. Aber das habe ich ja
schon hier erläutert.
Anschließend holt man sich die Daten in PHP per mysql_fetch_irgendwas
. Und da man selber keine Ahnung über die Anzahl der
Datensätze hat, macht man das in einer Schleife. Dabei passiert dann dieses. Über die Referenz/Ressource holt sich obige PHP-Funktion
jeden Datensatz einzeln(!) ab.
Schritt 1
+----+--------------+--------+--------+---------+
| id | produkt | preis | nummer | hs_link |
+----+--------------+--------+--------+---------+
| 1 | Schlagbohrer | 5.95 | 1000-1 | 1 |
+----+--------------+--------+--------+---------+
Schritt 2
+----+--------------+--------+--------+---------+
| id | produkt | preis | nummer | hs_link |
+----+--------------+--------+--------+---------+
| 2 | Zement | 19.95 | 1000-2 | 2 |
+----+--------------+--------+--------+---------+
usw.
Kapiert? Dasselbe Prinzip gilt übrigens auch bei SHOW
.
4. Die Sache mit dem 5 Rows ...
Das ist ganz einfach. Diese Information kann man sich bei PHP mit der Funktion mysql_num_rows
holen.
zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt