2012-11-19 30 views
0

我有這樣的代碼:如何獲取fetch_array的「while else」類型邏輯?

while($m = $movieResult->fetch_array(MYSQLI_ASSOC)){ 
     // stuff happens here 
} 
return $stuff; 

它的工作原理,但我真正需要的是檢測時,while循環沒有這樣的例子,但與while循環的多個迭代運行:

if($m = $movieResult->fetch_array(MYSQLI_ASSOC)){ 
     // stuff happens here 
     return $stuff; 
} 
else{ 
    return false; 
} 
+0

請注意 - > fetch_array抓取單行結果數據。它不抓取整個結果集。這可能是你想要的,但是鑑於你用這些代碼詢問了其他問題,我很肯定你會得到無效的結果。 –

+0

這是真的,我想我會簡單地創建一個變量設置爲false,然後如果while循環運行,我會將其更改爲數組和。=每次迭代。 – DominicM

+0

。=用於字符串操作。 array_push或'$ arr [] = ...'表示法更合適。 –

回答

1

我不知道您所使用的擴展(PDO/msqli/...),但我想你可以看到,如果你開始循環之前有任何結果第一

示例:

if ($movieResult->num_rows > 0){ 
    ... your while loop here 
}else{ 
    return false; 
} 
+0

我試圖避免這種情況,因爲在之前的問題中,我瞭解到在while循環之前檢查是毫無意義的。 「num_rows」如何檢查性能?如果它不重要,我可以使用它。 – DominicM

+0

表現明智嗎? * _num_rows方法什麼都不做,只是返回查詢中的行數。如果它是零,那麼不運行while循環,就這麼簡單。 – dockeryZ

+0

我現在看到,在我看來,得到的行數還有另一個數據庫調用,現在看起來很愚蠢:) – DominicM

0
$loopCount = 0 
while(condition) { 
    // stuff 
    $loopCount++; 
} 
if ($loopCount > 0) { 
    return $stuff; 
} 
return false; 
+0

只是在問我意識到我可以設置$ stuff爲false並在while循環中更新它。你的方法也可以工作,謝謝 – DominicM