我对PHP和pgsql还很陌生。。。一般来说,编码是新的。我正试图弄清楚我应该对这个问题进行while
还是do while
循环。
我需要查询远程源中的数据并更新数据库,但每次调用的返回次数有限。我有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
}
使用do while
id,循环应至少执行一次。
While is entry control loop(当您进入环路时,它将检查条件)
Do While是退出控制循环(它将在执行一次循环后检查条件。)
如果您希望循环至少运行一次;使用do
,但如果您的循环可能永远不会执行(因为条件),则使用while
。
在您的情况下,首选while
,因为数据库查询可能不会给出任何结果。while循环需要提取一行并对其进行处理,直到没有更多的行可提取为止。
while ($row = pg_fetch_row($result)) {
//your code to use row's data
}
do while循环与while循环非常相似,除了事实表达式在每次迭代结束时进行检查,而不是在开始与常规while循环的主要区别在于do-while循环的第一次迭代保证运行(事实表达式仅在迭代结束时检查),而可能不一定使用正则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
}
}