von Wolfgang Arnberger
Die Ergebnisse einer SQL Abfrage zu extrahieren ist oftmals eine
lange Prozedur. Sie können sich hierbei jedoch einiges einsparen.
Um das Ergebnis einer SELECT Abfrage in Variable zu schreiben,
können Sie folgendermaßen vorgehen:
<?php
$result = mysql_query("SELECT * FROM tabelle WHERE bedingung");
while($row = mysql_fetch_array($result)) {
// Ergebnis in Variable schreiben
$feld1 = $row["feld1"];
$feld2 = $row["feld2"];
$feld3 = $row["feld3"]; // u.s.w.
// Daten anzeigen
echo $feld1.", ".$feld2.", ".$feld3."<BR>";
}
?>
Diese Vorgangsweise führt zu erheblicher Schreibarbeit. Immer
wieder schreibt man Code wie “$feld = $row[“feld”];”. Besonders
bei längeren Feldlisten ist das lästig.
Alternativ kann man so vorgehen:
<?php
$result = mysql_query("SELECT * FROM tabelle WHERE bedingung");
while($row = mysql_fetch_array($result)) {
// Anzahl der Felder ermitteln
$j = mysql_num_fields($result);
for($i=0;$i<$j;$i++) {
// Name des aktuellen Feldes ermitteln
$k = mysql_field_name($result,$i);
// Dem Feldnamen einen Wert zuweisen
$$k = $row[$k];
}
// Daten anzeigen
echo $feld1.", ".$feld2.", ".feld3."<BR>";
}
?>
Diesen Code muß man nur mehr in das Script kopieren, die
SQL-Abfrage eintragen und kann sich die ganze Schreibarbeit mit
“$feld = $row[“feld”];” ersparen.
In der Variablen $j wird die Anzahl der Felder gespeichert. Anschließend
wird mit der for-Schleife jedes Feld angesprochen. Dabei wird der
Name des jeweiligen Feldes in $k gespeichert.
Man kann jetzt natürlich nicht der Variablen $k den Wert aus
$row[…] zuweisen, da man damit den Namen des Feldes überschreiben
würde. Um den Inhalt der Variablen $k als Variablennamen zu
verwenden und diesem Inhalt einen Wert zuzuweisen, schreibt man
$$k = $row[…]. Damit wird nicht die Variable $k sondern der Inhalt
der Variablen $k angesprochen.
(wa)
Vielen dank an IT-Studio.net,
und an Herrn Arnberger.