php loops - время или время пока?

1

Я все еще очень новичок в PHP и pgsql... новичок в кодировании в целом. Я пытаюсь выяснить, должен ли я сделать какое- while или do while цикл в этой проблеме.

Мне нужно запросить удаленный источник для данных и обновить мой db, но я ограничен количеством возвратов на звонок. У меня есть более 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
}
Теги:
while-loop
php-pgsql

2 ответа

0

Если вы хотите, чтобы цикл работал хотя бы один раз; используйте do, но если ваш цикл никогда не будет выполнен (из-за условия), тогда используйте while.

В вашем случае, в while как предпочитаемый, так как запрос к базе данных не может дать никаких результатов. Ваш цикл while должен извлекать одну строку и обрабатывать ее до тех пор, пока не будет больше строк для извлечения.

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

циклы do-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 data
      // do your curl stuff here for the 1 result
    }
}
  • 0
    Цикл не заканчивается ... он продолжает циклически $result = pg_query($dbconn, "SELECT full_address FROM $table WHERE latitude is NULL limit 5;"); while ($row = pg_fetch_all($result)) {... ... $result = pg_query($dbconn, "SELECT full_address FROM $table WHERE latitude is NULL limit 5;"); while ($row = pg_fetch_all($result)) {...
  • 0
    мой код использует pg_fetch_row не pg_fetch_all
Показать ещё 11 комментариев
0

Используйте do while id, цикл должен выполняться по крайней мере один раз.

Пока это контур управления доступом (он будет проверять состояние, пока вы входите в цикл)

Do While - это цикл управления выходом (он будет проверять состояние после выполнения цикла один раз.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню