PDO 中 bindParam 和 bindValue 的区别

文档解释:

绑定一个PHP变量到用作预处理的SQL语句中的对应命名占位符或问号占位符。 不同于 PDOStatement::bindValue() ,此变量作为引用被绑定,并只在 PDOStatement::execute() 被调用的时候才取其值。


大多数参数是输入参数,即,参数以只读的方式用来建立查询。一些驱动支持调用存储过程并作为输出参数返回数据,一些支持作为输入/输出参数,既发送数据又接收更新后的数据。


$sex = 'male';
$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');
$s->bindParam(':sex', $sex); // use bindParam to bind the variable
$sex = 'female';
$s->execute(); // executed with WHERE sex = 'female'


or


$sex = 'male';
$s = $dbh->prepare('SELECT name FROM students WHERE sex = :sex');
$s->bindValue(':sex', $sex); // use bindValue to bind the variable's value
$sex = 'female';
$s->execute(); // executed with WHERE sex = 'male'



参考:

https://stackoverflow.com/questions/1179874/what-is-the-difference-between-bindparam-and-bindvalue#answer-5077108

https://www.php.net/manual/zh/pdostatement.bindparam.php

https://www.php.net/manual/zh/pdostatement.bindvalue.php

随机推荐
node-sass 安装失败 gyp ERR! stack Error: EACCES: permission denied, mkdir '.../node-sass/build'
Sublime常用插件
MySQL从一个表往另一个表中导出数据,并处理时间格式
近几年前端技术盘点以及 2016 年技术发展方向
macOS 文字转语音命令 say
MySQL将时间戳直接转换成日期时间 FROM_UNIXTIME
(转)关于百度地图和高德地图,关于地图坐标系
物理对齐和视觉对齐
360曾经提供的php通用安全防护代码
微信小程序官方Demo登录失败,原因:PHP7.1以上版本废弃了Mcrypt