【发布时间】:2012-09-05 17:22:50
【问题描述】:
我经常看到代码使用 bindParam 或 bindValue 和 PDO。只是将参数传递给execute 是否因任何原因而皱眉?
我了解bindParam 实际上绑定到变量,您可以设置与bind 方法绑定的参数类型,但如果您只插入字符串怎么办?
$query = "SELECT col1 FROM t1 WHERE col2 = :col2 AND col3 = :col3 AND col4 = :col4";
$pdo->bindValue(':col2', 'col2');
$pdo->bindValue(':col3', 'col3');
$pdo->bindValue(':col4', 'col4');
上面我经常看到,但我个人更喜欢:
$pdo->execute(array(':col2' => 'col2', ':col3' => 'col3', ':col4' => 'col4'));
它没有那么冗长和直观,让输入一起“进入”查询对我来说更有意义。但是,我几乎没有看到它被使用过。
当您不必利用 bind 的特殊行为时,是否有理由更喜欢 bind 方法而不是向 execute 传递参数?
【问题讨论】:
-
我认为这取决于偏好问题 - 我倾向于使用
bindValue和bindParam,因为我认为生成的代码更易于阅读。 -
这确实取决于偏好。如果您不需要强制类型的能力(当您只使用字符串时),将数组传递给 execute() 既快捷又方便。