我有2个问题
我经常看到这个
$sql->bindParam(':xxx', $yyy, PDO::PARAM_zzz);
$sql->execute();
为什么不使用(1)
$sql->execute(array(':xxx'=>$yyy));
如果有太多的价值我应该使用(2)
$sql->bindParam(':aaa', $bbb, PDO::PARAM_zzz);
$sql->bindParam(':ccc', $ddd, PDO::PARAM_zzz);
$sql->bindParam(':eee', $fff, PDO::PARAM_zzz);
$sql->execute();
或
$sql->execute(array(':aaa'=>$bbb,':ccc'=>$ddd,':eee'=>$fff));
答案 0 :(得分:7)
第一个答案非常简单。一个普通的PHP用户是一个肯定的货运崇拜程序员,他通过实例学习,而不是通过理解。这就是为什么大多数PHP代码在上个世纪的实践中具有可怕的质量。
所以问你问的问题。 PHP用户会看到一个示例,其中包含所有这些冗长而多风的bindParam
方法,并将其一直使用。几乎没有人会像你一样问自己一个问题,但只是继续模仿他们有一天学到的行为。
就这么简单。
有一些例外情况,你真的需要单独的绑定,但实际上很少养成习惯。严格来说,只有我知道的一个 - LIMIT calause when emulation is turned on.
顺便说一句,我个人认为第二种方法太过冗长,并且这种方式使用它(当然还有位置占位符):
$sql->execute(array($bbb,$ddd,$fff));