Weniger Schreibarbeit mit SQL Abfragen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Weniger Schreibarbeit mit SQL Abfragen

    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.
  • Moin,

    sicherlich nimmt der Vorgang beim genannten Beispiel Schreibarbeit ab, jedoch möchte ich auch erwähnt wissen, dass der Vorgang an sich überflüssig ist. Das Kopieren der Ergebnisse ist überflüssig und "rumkopiererei".
    Man kann auch ohne Probleme direkt die Variable, die z.B. mysql_fetch_array befüllt ausgeben.

    lg