PHP Array

Hallo an alle.

Ich führe mit PHP eine Abfrage auf eine MySQL DB:

$result=mysql_query(„select…“);

Danach gebe ich das Ergebnis der Abfrage aus:

while ($row=mysql_fetch_row($result))
{
echo $row[0];
}

Das funktioniert.
Jedoch möchte ich später nochmal auf das Ergebnis zugreifen. Einfach mit echo $row[0] funktioniert es nicht.
Warum nicht?
Und wie könnte ich das bewerkstelligen?
Zur Info: die Abfrage liefert nur eine Zeile.

Danke
MfG Vitali

Hi

while( $aRow = mysql\_fetch\_row( $result ) ){
 $aWerte[] = $aRow;
}
var\_dump( $aWerte );

Dein Problem ist, du überschreibst dein $Row ja bei jedem While durchlauf. So das du zwar in der Schleife immer auf das entsprechende $row[0] zugreifen kannst, aber im nächsten While-durchlauf mit dem nächsten wert überschreibst. So bleibt, wenn du aus der whileschleife rauskommst nur der letzte wert in $row.

Gruß Lamer
PS: probier das ganze mal mit mysql_fetch_assoc( $result ) dann kannst du direkt auf die Tabellenspalten zu greifen. Dann wird nämlich aus der Rückgabe ein assoziatives Array mit den Tabellenspaltennamen als Key.

$result=mysql_query(„select…“);

while ($row=mysql_fetch_row($result))
{
echo $row[0];
}

du weisst was das heist ?

solange es eine ergenisreihe gibt , weise diese $row zu .

um $row nicht immer wieder zu überschreiben muss du die reihe halt in ein arry schreiben

$allrows=array();
while ($row=mysql_fetch_row($result))
{
echo $row[0];
array_push($allrows,$row);
}

Hallo

um $row nicht immer wieder zu überschreiben muss du die reihe
halt in ein arry schreiben

Im Ursprungsposting steht, dass der SELECT-Befehl nur einen Datensatz liefert. Also kann da gar nichts überschrieben werden.
Ich würde allerdings statt while ein if in den Code schreiben, dann kann man bei späterem Lesen gleich erkennen, dass nur ein Datensatz ausgewertet wird.

$allrows=array();
while ($row=mysql_fetch_row($result))
{
echo $row[0];
array_push($allrows,$row);
}

Dein Problem ist, du überschreibst dein $Row ja bei jedem
While durchlauf. So das du zwar in der Schleife immer auf das
entsprechende $row[0] zugreifen kannst, aber im nächsten
While-durchlauf mit dem nächsten wert überschreibst. So
bleibt, wenn du aus der whileschleife rauskommst nur der
letzte wert in $row.

Ja, bin damit einverstanden. Aber beim Auslesen des Arrays (mit $row[0]) erhalte ich überhaupt keinen Wert.

Ja, bin damit einverstanden. Aber beim Auslesen des Arrays
(mit $row[0]) erhalte ich überhaupt keinen Wert.

Ja, natürlich. Beim Letzten While durchlauf gibt mysql_fetch_array ein False zurück was natürlich in Row gespeichert wird und dann erst die While schleife beendet.

Daher hast du wenn du aus der Whileschleife raus bist keinen wert mehr in $row[0]

Gruß Lamer

OK, hab verstanden warum das Ergebnis „leer“ ist. Danke!

Habe es allerdings nicht mit fetch_assoc gelöst, sondern so:

_$result=mysql_query(„select…“);

while ($row=mysql_fetch_row($result))
{
$tempvar=$row[0];
echo $row[0];
}_

Später kann ich jederzeit auf $tempvar zugreifen. Sie hat dann den letztgeschriebenen Wert.

Da ich weiss das die MySQL-Abfrage nur einen Datensatz liefert brauche ich ja keine while-Schleife mehr. Dann gebe es noch die Möglichkeit es so zu lösen:

_$result=mysql_query(„select…“);

$row=mysql_fetch_row($result);
echo $row[0];_

Damit kann ich auf $row[0] auch jederzeit später noch zugreifen.

Frage am Rande: sind das saubere Lösungen?

Hi
Wenn du weißt das du mit der SELECT-Anweisung nur einen Datensatz herausbekommst ist es ok das nicht in eine WhileSchleife zu schreiben.

Sauber ist es in sofern das es für deinen stand der Programmierung ausreichend ist.
Das ganze ist ja auch eine Definitionssache. Ich würde z.B. dies alles mit MySQLi und PrepareStatments lösen.
Aber das ist jedem selber überlassen. Die Erfahrung zeigt das, wenn jemand seinen Stil ordentlich beibehält es für ihn selber immer gut ist. Schlecht wird es erst wenn es mehrere Programmierer sind die dann jeder unterschiedliche Stile hat.

Gruß Lamer