为了账号安全,请及时绑定邮箱和手机立即绑定

bindParam和bindValue有什么区别?

bindParam和bindValue有什么区别?

PHP
眼眸繁星 2019-06-18 10:53:28
bindParam和bindValue有什么区别?.之间的区别是什么?PDOStatement::bindParam()和PDOStatement::bindValue()?
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

答案在bindParam:

与PDOStatement:bindValue()不同,变量被绑定为引用,并且只在调用PDOStatement:Execute()时才进行计算。

execute

调用PDOStatement:bindParam()将PHP变量绑定到参数标记:绑定变量将其值作为输入传递,并接收相关参数标记的输出值(如果有的话)

例子:

$value = 'foo';$s = $dbh->prepare('SELECT name FROM bar WHERE baz = :baz');$s->bindParam(':baz', $value);
 // use bindParam to bind the variable$value = 'foobarbaz';$s->execute(); // executed with WHERE baz = 'foobarbaz'

$value = 'foo';$s = $dbh->prepare('SELECT name FROM bar WHERE baz = :baz');$s->bindValue(':baz', $value); 
// use bindValue to bind the variable's value$value = 'foobarbaz';$s->execute(); // executed with WHERE baz = 'foo'


查看完整回答
反对 回复 2019-06-18
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

以下是一些我可以考虑的问题:

  • 带着

    bindParam

    ,则只能传递变量,而不能传递值。
  • 带着

    bindValue

    ,您可以同时传递两者(显然,值和变量)。
  • bindParam

    只适用于变量,因为它允许通过“引用”将参数作为输入/输出给出。

    (在PHP中,值不是有效的“引用”)

    *对司机有用的是(引用手册):

支持将数据作为输出参数返回的存储过程的调用,以及作为输入/输出参数的调用,这些参数既发送数据,又更新以接收数据。

对于某些DB引擎,存储过程可以具有输入(从PHP到过程的值)和输出(从存储的proc返回值到PHP)的参数;要绑定这些参数,必须使用bindParam,而不是bindValue。


查看完整回答
反对 回复 2019-06-18
  • 3 回答
  • 0 关注
  • 906 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信