【发布时间】:2012-12-14 04:53:20
【问题描述】:
使用PDOStatement::bindParam(),可以将参数绑定到变量——这在多次执行准备好的语句时特别有用,每个语句都有不同的参数值。例如:
$dbh = new PDO('mysql:dbname=foo', 'eggyal', 'password1');
$qry = $dbh->prepare('DELETE FROM bar WHERE qux = ?');
$qry->bindParam(1, $qux, PDO::PARAM_INT);
while (true) {
$qux = ... ;
$qry->execute();
// etc
}
我的问题是:
-
是否可以将参数绑定到对象的成员变量?例如:
$qry->bindParam(1, $obj->qux, PDO::PARAM_INT); -
如果是这样,到哪个对象的成员变量是这样一个参数绑定:在
bindParam()调用时引用的那个,还是在语句执行时引用的那个?例如:$obj->qux = 123; $obj = new stdClass(); $obj->qux = 456; $qry->execute(); // which value is used for qux ? 这种行为记录在哪里(如果有的话)?
【问题讨论】:
-
绑定时绑定到对象的实例属性。创建一个新对象并将其分配给以前的对象变量名不会更新引用。
-
同意。如果您一次将多个对象保存到数据库中,我是否建议在事务中重写它? (如果你的引擎支持的话。)
标签: php oop pdo prepared-statement pdostatement