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