M.Schmidt: MYSQL Verständisfrage

[Feld1] [Feld2] [Feld3]
  1        3       1
  2        0       1
  3        3       1
  4        0       1
  5        1       1
  6        0       2
  7        0       2
...

$query = @mysql_query("SELECT Feld2 FROM Tabell1 WHERE Feld3 = '1'");

Ich hätte ich gern die Werte von Feld2, darum hab ich folgenes probiert:

$Temp = @mysql_fetch_array($query);

und wollte die werte mit:

for ($i=0;$i<=11;$i++)
    {
       echo $Temp[$i]" ausgeben
    }

ausgeben.Da kam dann nur der erste Wert von der ersten Zeile, also die erste "3" raus, dann nix mehr. Wenn ich mit :

$i = 0;
            while($row = mysql_fetch_array($query))
            {
             $$Temp[$i] = $row['Feld2'];
             $i++;
            }
ausprobiere und dann die $Temp[$i] Werte ausgebe funktionierts, meine Frage: Warum ? bzw Warum geht die erste Variante nicht ???

Dank im Vorraus
M.Schmidt

  1. yo,

    meine Frage: Warum ? bzw Warum geht die erste Variante nicht ???

    die anweisung mysql_fetch_array holt bei jedem aufruf genau einen datensatz aus der ergebnisliste der sql abfrage und speichert es in dem array. bei einem weiteren aufruf holt er den nächsten datensatz und so weiter, bis der pointer am ende angekommen ist.

    deswegen schließt man das ganze auch in einer while schleife ein, weil genau dadurch alle datensätze der ergebnisliste ausgelesen werden. dabei ist anzumerken, dass zwar immer nur ein datensatz pro durchlauf gelesen wird, dieser datensatz aber durchaus mehrere spalten haben kann.

    Ilja

    1. Hello,

      versuch es la so:

      leeres Array bereitstellen

      $_liste = array();

      alle Zeilen des Resultset auslesen.

      while ($_liste[] = mysql_fetch_assoc($res));

      Ausgabe zum Debug

      echo "<pre>";
      print_r($_liste);
      echo "</pre>";

      Es ist übrigens speichersparender, wenn man nicht mysql_fetch_array() sondern mysql_fetch_assoc() oder mysql_fetch_row() benutzt.

      Liebe Grüße aus http://www.braunschweig.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen