1

我对 PHP 和 pgsql 还是很陌生……一般来说是编码新手。我试图弄清楚我是否应该对这个问题做一个whiledo 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
}
4

2 回答 2

0

使用do whileid 循环应该至少执行一次。

While 是进入控制循环(它会在你进入循环时检查条件)

Do While 是退出控制循环(循环执行一次后会检查条件。)

于 2015-11-19T10:33:36.957 回答
0

如果您希望循环至少运行一次;使用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
    }
}
于 2015-11-19T10:37:49.137 回答