PHP-php pdo 中 bindParam这个方法有什么特别的作用???
以下是代码
$stmt = $pdo->prepare("INSERT INTO new(user,pass) VALUES('?','?')");
$stmt ->execute(array('test','123'));
$stmt ->execute(array('test2','4123'));//执行多条
$stmt ->execute(array('test4','1223'));//执行多条
//这种方法很简洁,但是还有这种bindParam方法
$stmt = $pdo->prepare("INSERT INTO new(user,pass) VALUES('?','?')");
$stmt->bindParam(1,addslashes('test'))//这里因为必须要放一个变量,所以用addslashes代替一下,
$stmt->bindParam(2,addslashes('1234'))//这里因为必须要放一个变量,所以用addslashes代替一下,
$stmt->execute();
//执行多条
$stmt->bindParam(1,addslashes('test'))//这里因为必须要放一个变量,所以用addslashes代替一下,
$stmt->bindParam(2,addslashes('1234'))//这里因为必须要放一个变量,所以用addslashes代替一下,
$stmt->execute();
$stmt->bindParam(1,addslashes('test'))//这里因为必须要放一个变量,所以用addslashes代替一下,
$stmt->bindParam(2,addslashes('1234'))//这里因为必须要放一个变量,所以用addslashes代替一下,
$stmt->execute();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
用$stmt->bindParam(1,addslashes('test')),如果是多个值的话它就会被后面的值覆盖,因为在PHP内部使用的是引用传值,
你每bind完一条参数的时候(注:SQL语句中所需要的参数),如果不执行execute()那么就会被下一条所覆盖,因为&原因,
一般我常用的就是直接在execute里面传参,要多条的话一个foreach就搞定了,这样就可以省代码了,你自己可以根据你的喜好来决定。
用上面的就可以了,
请看这篇文字:
PDOStatement::bindParam的一个陷阱(http://www.laruence.com/2012/10/16/2831.html)
都可以的,无非传值到对象中进行操作的方法不同而已,根据个人的喜好和结合具体环境选择吧!
$stm = $pdo ->prepare("UPDATE user SET time= :time WHERE user = :user");
$user = "jack";
$time = microtime(true);
$stm->bindParam(":user",$user);
$stm->bindParam(":time",$time);
$stm->execute();
$time = microtime(true);
$user = "Tom"; //bindParam一次之后不需要再次绑定,只要直接改变变量的值即可
$stm->execude();