2015-11-19 202 views
1

我還是很新的PHP和pgsql ...一般編碼。 我想弄清楚是否應該在這個問題上做一個whiledo while循環。PHP循環 - 雖然或做?

我需要查詢遠程數據源並更新我的數據庫,但我僅限於每次調用的返回次數。我有超過1000行要更新,但是我的調用限制爲100.這意味着我需要執行多個調用,直到列中的所有行都不再爲空。

我相信這是正確的查詢,但是我的while聲明正確嗎?

這裏我的代碼:

// $dbconn = connection...... 
$result = pg_query($dbconn, "WITH data(full_address) AS (VALUES ('location')) 
SELECT full_address FROM $table WHERE latitude is NULL limit 5;"); 

while ($row = pg_num_rows($result > 0)) { 
    $arr = pg_fetch_all($row); 

//curl commands fetch data and ingest 
} 

回答

0

使用do while ID循環應該得到ATLEAST執行一次。

雖然是入門控制迴路(它會檢查條件,而你是在進入循環)

做,當是出口控制迴路(它會執行循環一次後檢查的條件。)

0

如果您希望循環至少運行一次;使用do,但如果您的循環可能永遠不會執行(由於條件),然後使用while

在你的情況下,while是首選,因爲數據庫查詢可能沒有結果。您的while循環需要獲取一行並處理它,直到沒有更多行要獲取。

while ($row = pg_fetch_row($result)) { 
    //your code to use row's data 
} 

做-while循環非常相似,while循環,除了真相 表達在每次迭代結束,而不是在 開始檢查。與常規while循環的主要區別在於do-while循環的第一次迭代保證運行(事實 表達式僅在迭代結束時被檢查),而它的 可能不一定以常規運行循環(在每次迭代開始時檢查表達式的真值 ,如果 從頭開始計算爲FALSE,循環執行將立即結束 )。

來自:http://php.net/manual/en/control-structures.do.while.php

編輯

// $dbconn = connection...... 
for($=0;$i<10;$i++){ 
$result = pg_query($dbconn, "**your query with** Limit ".(100*$i).",100;"); 
    while ($row = pg_fetch_row($result)) { 
     //your code to use row's data 
     // do your curl stuff here for the 1 result 
    } 
} 
+0

的循環沒有結束..它不斷循環一遍又一遍...... '$結果= pg_query($ dbconn, 「SELECT full_address FROM $ table WHERE latitude is NULL limit 5;」); while($ row = pg_fetch_all($ result)){...' – Dean

+0

我的代碼使用'pg_fetch_row'而不是'pg_fetch_all' – Shujaat

+0

是的,像這樣 '$ result = pg_query($ dbconn,「SELECT full_address FROM $ table WHERE latitude is NULL limit 5;」); while($ row = pg_fetch_all($ result)){ $ swears = array(「full_address」=>「&location」,「{」=>「」,「}」=>「」,「[」=> 「」,「]」=>「」,'「'=>」「,」:「=>」=「); $ json = json_encode($ row);' – Dean