2012-05-20 68 views
-4

爲什麼這是不可能的?有什麼辦法可以讓我的決心不是空的?while循環後結果爲空

$sqlAllInfo = "SELECT item1, item2 FROM example"; 
$resAllInfo = mysql_query($sqlAllInfo); 

while($rowAllInfo = mysql_fetch_assoc($resAllInfo)){ 

    echo $rowAllInfo['item1']; 

} 

$rowAllInfo = mysql_fetch_assoc($resAllInfo); 

echo $rowAllinfo['item2']; 

感謝您的時間

+0

重新什麼柯林說:比如,你已經明確表示,[這個答案](http://stackoverflow.com/ a/7773141/157247)在那裏回答你的問題。 –

回答

2

號,結果將永遠是你的,而循環後空,因爲while循環從結果資源中提取的所有值..
while循環繼續循環,同時有還是信息提取,而當它是空的或將要結束的時候發生錯誤時 如果你彪獲得的最後一項 $ rowAllInfo仍包含最後一項

;)

+0

好的,謝謝你的探索;) – thar

2

您是通過循環結果集使用while直到沒有更多的結果剩下。當mysql_fetch_assoc返回falsewhile循環退出,因爲沒有更多結果。再次調用mysql_fetch_assoc意味着沒有更多結果。

2

這條線:

while($rowAllInfo = mysql_fetch_assoc($resAllInfo)){ 

一個新的值賦給rowAllInfo事後檢查它是否仍是 「真」 -ish(如 「真」 作爲PHP可以;-))

現在,在取出最後一行後,mysql_fetch_assoc()將返回false,然後將其分配給$ rowAllInfo。由於$ rowAllInfo現在爲「false」,循環將不再執行,但 - 看起來 - 這太遲了!您變量已具有分配給它的值false

即使在此之後,您再次致電mysql_fetch_assoc()。但是,由於您已經獲取了循環中的所有行,因此不會再有行,並且再次將$rowAllInfo設置爲「false」。

所以,無論你想要做什麼 - 這可能不是你的方式。要達到什麼我明白你正在嘗試做的常用方法如下:

$allRows = array(); 
while($row = mysql_fetch_assoc($res)) { 
    $allRows[] = $row; 
} 

// show the array we just created... 
echo print_r($arrRows, 1);