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