Я все еще очень плохо знаком с 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
}
использование do while
id цикл должен выполняться как минимум один раз.
Пока это входной цикл управления (он будет проверять состояние, пока вы входите в цикл)
Do While — выход из цикла управления (он проверит условие после выполнения цикла один раз.)
Если вы хотите, чтобы цикл запускался хотя бы один раз; использование 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
}
}