1

私はまだPHPとpgsqlに非常に慣れていません...一般的なコーディングは初めてです。whileこの問題でordo whileループを実行する必要があるかどうかを判断しようとしています。

データのリモート ソースにクエリを実行し、データベースを更新する必要がありますが、呼び出しごとのリターン数に制限があります。更新する行が 1000 を超えていますが、呼び出し制限は 100 です。これは、列内のすべての行が null でなくなるまで、複数の呼び出しを行う必要があることを意味します。

これは正しいクエリだと思いますが、私の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 whileループを少なくとも 1 回実行する必要がある IDを使用します。

While is entry control loop (ループに入っている間に状態をチェックします)

Do While は制御ループの終了です (ループを 1 回実行した後に状態をチェックします)。

于 2015-11-19T10:33:36.957 に答える
0

ループを少なくとも 1 回実行する場合。を使用doしますが、(条件のために) ループが実行されない可能性がある場合は、 を使用しますwhile

あなたの場合、whileデータベースクエリが結果を返さない可能性があるため、優先されます。while ループは、単一の行をフェッチし、フェッチする行がなくなるまで処理する必要があります。

while ($row = pg_fetch_row($result)) {
  //your code to use row's data
}

do-while ループは while ループと非常によく似ていますが、真偽式が各反復の最初ではなく最後にチェックされる点が異なります。通常の while ループとの主な違いは、do-while ループの最初の反復が実行されることが保証されていることです (真偽式は反復の最後にのみチェックされます)。 true 式は各反復の開始時にチェックされ、最初から 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 に答える