PDO将FetchAll存储在变量中,而直接在foreach中使用

时间:2018-11-29 15:26:01

标签: php pdo fetchall

所以我很好奇。我总是尽量避免创建只能使用一次的变量,而是尝试直接使用它(除非文本很多,例如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) {}

这两个代码是否相同?并且(巨大的)性能差异是其中之一吗?

1 个答案:

答案 0 :(得分:1)

在内部,他们会做同样的事情。唯一的区别是,在一种情况下,它将使用您显式创建的变量来保存fetchAll()的结果,在第二种情况下,它将使用临时变量。