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.

Bookmark setzen... These icons link to social bookmarking sites where readers can share and discover new web pages.
  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Bloglines
  • MisterWong
  • MySpace
  • Reddit
  • SEOigg
  • Technorati
  • TwitThis
  • Y!GG
  • Google Bookmarks

Weiterführende Links: