foreach l oop выполнить один раз или выполнить каждый раунд - PullRequest
1 голос
/ 22 апреля 2020

У меня есть код php.

foreach($db->exec("SELECT * FROM users") as $k => $v) {
   # code ...
}

Я хочу знать в foreach l oop, каждый раунд выполняет код $db->exec("SELECT * FROM users") или выполняет его один раз и использует его в каждом раундов?

Извините, если мой английский sh плох: (

1 Ответ

0 голосов
/ 22 апреля 2020

Ваш код работает так, как если бы это было так, выполняя запрос один раз, затем обрабатывая каждую строку набора результатов.

$resultset = $db->exec("SELECT * FROM users");
foreach ( $resultset as $k => $v ) {
   # code ...
}

Но, остерегайтесь . Вы всегда должны проверять ошибки от внешних операций, таких как запросы СУБД. То, как вы написали свой код, усложняет задачу. Вот грубый способ проверить ошибки и остановить вашу программу, если есть какие-либо

$resultset = $db->exec("SELECT * FROM users");
if (!$resultset) {
    print_r($db->errorInfo());
    die "sql error";
} 
else {
    foreach ( $resultset as $k => $v ) {
       # code ...
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...