PDO, сохраняющий результат FetchAll, в переменной против использования непосредственно в foreach - PullRequest
0 голосов
/ 29 ноября 2018

Итак, любопытство дошло до меня.Я всегда стараюсь избегать создания переменных, которые будут использоваться только один раз, вместо этого я стараюсь использовать их напрямую (если это не много текста, например, запросы MySQL).

Обычно я делаю что-то вроде этого:

$getSomethingSql = 'LONG SQL';
$getSomething = $dbConnection->prepare($getSomethingSql); // or query if no parameters are needed
// Some binds etc if needed
$getSomething->execute(); // if prepared statements are used
$something = $getSomething->fetchAll(PDO::FETCH_ASSOC);

foreach ($something as $s) {}

Теперь $getSomethingSql используется только один раз, но сохраняется как переменная, поскольку это может быть длинная строка, и, следовательно, это выглядит лучше.Однако мне было любопытно, есть ли какое-либо преимущество использования выше по сравнению с кодом ниже:

$getSomethingSql = 'LONG SQL';
$getSomething = $dbConnection->prepare($getSomethingSql); // or query if no parameters are needed
// Some binds etc if needed
$getSomething->execute(); // if prepared statements are used

foreach ($getSomething->fetchAll(PDO::FETCH_ASSOC) as $s) {}

Эти 2 кода делают то же самое?И есть (огромная) разница в производительности, или один из них чище?

1 Ответ

0 голосов
/ 29 ноября 2018

Внутренне они будут делать то же самое.Единственное отличие состоит в том, что в одном случае он будет использовать вашу явно созданную переменную для хранения результатов fetchAll(), а во втором случае он будет использовать временную переменную.

...