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

Я все еще очень плохо знаком с 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
}

1

Решение

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

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

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

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 (правда
выражение проверяется в начале каждой итерации, если оно
оценивается в ЛОЖЬ с самого начала, выполнение цикла будет
конец немедленно).

от: 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
}
}
0

По вопросам рекламы [email protected]