所以我很好奇。我总是尽量避免创建只能使用一次的变量,而是尝试直接使用它(除非文本很多,例如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) {}
这两个代码是否相同?并且(巨大的)性能差异是其中之一吗?
答案 0 :(得分:1)
在内部,他们会做同样的事情。唯一的区别是,在一种情况下,它将使用您显式创建的变量来保存fetchAll()
的结果,在第二种情况下,它将使用临时变量。