理解bindParam和bindValue之间的区别
问题:
根本区别是什么PDOStatement::bindParam() 和之间PDOStatement::bindValue()?
答案:
根据 PDOStatement::bindParam 手册条目,关键区别在于两个方法的引用行为。 bindParam 将变量绑定为引用,而bindValue 则绑定变量的值。此引用行为在 PDOStatement::execute() 执行期间发挥作用。
bindParam 示例:
考虑以下代码:
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindParam(':sex', $sex); // bind the variable using bindParam $sex = 'female'; $s->execute(); // execute with WHERE sex = 'female'
这里,bindParam 绑定了 $sex 作为引用。当该语句执行时,它引用 $sex 的当前值,该值已更改为“female”。因此,查询将检索“女性”学生的结果。
bindValue 示例:
现在让我们使用 bindValue 检查类似的示例:
$sex = 'male'; $s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex'); $s->bindValue(':sex', $sex); // bind the variable's value using bindValue $sex = 'female'; $s->execute(); // execute with WHERE sex = 'male'
本例中,bindValue 绑定的是绑定时 $sex 的值,即 'male'。因此,查询将始终检索“男”学生的结果,即使 $sex 的值稍后发生更改。这演示了bindValue的非引用行为。
以上是bindParam 与 bindValue:PHP PDO 的主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!