2017-05-01 2 views
0

Warum wird die folgende Code Arbeit eine Reihe von mysql ZeilenObjekte während Schleifen

$base=new mysqli("...");   
    $query="SELECT *somthing* FROM *table* WHERE *some match*"; 
    $result=$base->query($query); 
    while ($row=$result->fetch_assoc()) { 
     var_dump($row);  
    }; 

, zu drucken, während diese eine get wiederholt das erste Spiel Druck gefangen ist?

$base=new mysqli("...");   
    $query="SELECT *somthing* FROM *table* WHERE *some match*";   
    while ($row=$base->query($query)->fetch_assoc()) { 
     var_dump($row);   
    }; 

Antwort

1

Da im zweiten Beispiel sind Sie die Abfrage sowie das Ergebnis in jeder Iteration der Schleife aufrufen, was bedeutet, das erste Ergebnis aus der Ergebnismenge der Abfrage wird in fetch_assoc jedes Mal verwendet werden zurückgegeben.

Nehmen Sie dies zum Beispiel das Beispiel zu erläutern:

class Test 
{ 
    public function getQuery() 
    { 
     echo 'x'; 
     return $this; 
    } 

    public function getResult() 
    { 
     echo 'y'; 
     return $this; 
    } 
} 

Wenn Sie Schleife while ($row = $class->getQuery()->getResult()) { dann die Echo Aussagen über ausgeben wird sowohl x und y jedes Mal. Dies unterstreicht das Symptom Sie sehen, wo Sie halten das erste Ergebnis jedes Mal bekommen: xyxyxyxy...

wieder - wenn Sie die oben genannten Klasse in Form von $query = $class->getQuery() dann laufen while ($row = $query->getResult()) { Sie ein „x“ und viel „y sehen "s: xyyyyyyy...

+0

Ich habe es, danke. – PeMa

Verwandte Themen