我仍然是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
}发布于 2015-11-19 18:33:37
使用do while id循环应该至少执行一次。
While是进入控制循环(它会在你进入循环时检查条件)
Do While是退出控制循环(执行一次循环后将检查条件)。
发布于 2015-11-19 18:37:49
如果您希望循环至少运行一次;请使用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
}
}https://stackoverflow.com/questions/33801220
复制相似问题