2017-05-01 149 views
0

爲什麼下面的代碼工作中打印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()) {然後回聲上述聲明將輸出x和y各自的時間。這凸顯你看到的,你保持每次得到的第一個結果症狀:xyxyxyxy...

再次 - 如果你在$query = $class->getQuery()形式運行上面的類,然後while ($row = $query->getResult()) {你會看到一個「Y的「X」和大量「s:xyyyyyyy...

+0

明白了,謝謝。 – PeMa