pdo中bindParam()与bindValue的区别

Posted 夜深人静123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pdo中bindParam()与bindValue的区别相关的知识,希望对你有一定的参考价值。


2012-07-03  ConfiJin  文章来源  阅 2491  转 2

php pdo中bindParam() 和 bindValue()方法的区别

方法 bindParam() 和 bindValue() 非常相似。
唯一的区别就是前者使用一个PHP变量绑定参数,而后者使用一个值。

所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值。

01$stm $pdo->prepare("select * from users where user = :user");
02$user "jack";
03//正确
04$stm->bindParam(":user",$user);
05//错误
06//$stm->bindParam(":user","jack");
07//正确
08$stm->bindValue(":user",$user);
09//正确
10$stm->bindValue(":user","jack");

另外在存储过程中,bindParam可以绑定为input/output变量,如下面:

1$stm $pdo->prepare("call func(:param1)");
2$param1 "abcd";
3$stm->bindParam(":param1",$param1); //正确
4$stm->execute();

存储过程执行过后的结果可以直接反应到变量上。

对于那些内存中的大数据块参数,处于性能的考虑,应优先使用前者。

以上是关于pdo中bindParam()与bindValue的区别的主要内容,如果未能解决你的问题,请参考以下文章

PDO->bindParam、PDO->bindValue 和 PDO->closeCursor

PHP扩展PDO MySQL之PDOStatement::bindParam vs bindValue

PHP PDO::bindParam() 数据类型.. 它是如何工作的?

PHP PDO bindParam() 和 MySQL BIT

bindParam 和 bindValue 有啥区别?

php之bindValue和bindParam的区别