【发布时间】:2015-06-08 00:25:41
【问题描述】:
<?php
$db = new PDO($dsn,$username,$password);
$uname='avi';
$age=19;
$stmt = $db->prepare('INSERT INTO table(uname,age) VALUES(:uname,:age)');
$stmt->execute(array(':uname'=>$uname,':age'=>$age));
$stmt = $db->prepare('INSERT INTO table(uname,age) VALUES(?,?)');
$stmt->execute(array($uname,$age));
$stmt = $db->prepare('INSERT INTO table(uname,age) VALUES(:uname,:age)');
$stmt->bindValue(':uname',$uname); //can be $uname or just 'avi'
$stmt->binParam(':age',$uname); //cannot be 'avi' or value only
$stmt->execute();
?>
我们什么时候应该使用bindParam()?以前的所有方法似乎都更简单,需要的代码行数更少。
与其他方法(bindValue()、execute())相比,使用bindParam() 有什么好处?
【问题讨论】:
-
既然可以用钉子,为什么还要有螺丝?这只是完成同一件事的不同方式。
-
是的,但是 SO 中的很多站点和一些示例都使用了 bindParam,我什么时候应该使用 bindParam? php 文档中的一些示例显示它与返回值的存储过程一起使用
-
不同情况下的不同用途。在完全没有功能的代码中,bindParam() 有点像
:foo &= $var。 foo 参数将是对 $var 的引用,并在您调用execute()时简单地提取变量中的任何值。->exec(array(...))版本使用当时的变量值。 -
如果我使用存储过程,我可以使用 bindValue 将返回值存储在所需的变量中