2017-05-01 3 views
0

なぜ、この1つの取得者が繰り返し最初の試合を印刷閉じ込められている間、MySQLの行オブジェクトが

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

の配列を印刷するには、次のコードの作業を行うループ?

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

答えて

1

第二の例では、あなたがfetch_assocたびに使用返されるクエリの結果セットからの最初の結果を意味し、ループの各反復では、クエリだけでなく、結果を呼び出しているので。

例を説明するために、たとえばこれを持っ:

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

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

あなたループwhile ($row = $class->getQuery()->getResult()) {場合が出力されます上記その後、echo文xとyの両方たびに。再びxyxyxyxy...

- あなたは$query = $class->getQuery()の形で上記のクラスを実行する場合、あなたは「Yの1「×」とたくさん表示されますwhile ($row = $query->getResult()) {:これは、あなたが最初の結果を毎回得続けるあなたが見ている症状を強調します"s:xyyyyyyy...

+0

ありがとうございました。 – PeMa