php循环 - 同时还是执行?

时间:2015-11-19 10:27:09

标签: php postgresql while-loop php-pgsql

我对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
}

2 个答案:

答案 0 :(得分:0)

使用do while id循环应至少执行一次。

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

Do while是退出控制循环(它将在执行循环一次后检查条件。)

答案 1 :(得分: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
    }
}