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



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

这两个代码的作用相同吗?是否存在(巨大的(性能差异,或者其中一个更清洁?

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

最新更新