PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别


Posted in PHP onNovember 20, 2014

PDOStatement::bindParam — 绑定一个参数到指定的变量名。

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

PDOStatement::bindValue — 把一个值绑定到一个参数。

绑定一个值到用作预处理的 SQL 语句中的对应命名占位符或问号占位符。

<?php

$stm = $pdo->prepare("select * from users where user = :user");

$user = "jack";

//正确

$stm->bindParam(":user",$user);

//错误

$stm->bindParam(":user","jack");

//正确

$stm->bindValue(":user",$user);

//正确

$stm->bindValue(":user","jack");

 

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

?>

PDOStatement::bindColumn — 绑定一列到一个 PHP 变量。

安排一个特定的变量绑定到一个查询结果集中给定的列。每次调用 PDOStatement::fetch() 或 PDOStatement::fetchAll() 都将更新所有绑定到列的变量。

<?php

function  readData ( $dbh ) {

    $sql  =  'SELECT name, colour, calories FROM fruit' ;

    try {

        $stmt  =  $dbh -> prepare ( $sql );

        $stmt -> execute ();

 

        /*  通过列号绑定  */

        $stmt -> bindColumn ( 1 ,  $name );

        $stmt -> bindColumn ( 2 ,  $colour );

 

        /*  通过列名绑定  */

        $stmt -> bindColumn ( 'calories' ,  $cals );

 

        while ( $row  =  $stmt -> fetch ( PDO :: FETCH_BOUND )) {

            $data  =  $name  .  "\t"  .  $colour  .  "\t"  .  $cals  .  "\n" ;

            print  $data ;

        }

    }

    catch ( PDOException $e ) {

        print  $e -> getMessage ();

    }

}

readData ( $dbh );

?>
PHP 相关文章推荐
php adodb连接mssql解决乱码问题
Jun 12 PHP
PHP 内存缓存加速功能memcached安装与用法
Sep 03 PHP
分享8个最佳的代码片段在线测试网站
Jun 29 PHP
php读取文件内容的三种可行方法示例介绍
Feb 08 PHP
微信公众平台实现获取用户OpenID的方法
Apr 15 PHP
PHP时间类完整实例(非常实用)
Dec 25 PHP
php获取客户端IP及URL的方法示例
Feb 03 PHP
php数组指针操作详解
Feb 14 PHP
php判断str字符串是否是xml格式数据的方法示例
Jul 26 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
PHP如何使用JWT做Api接口身份认证的实现
Feb 03 PHP
php实现JWT验证的实例教程
Nov 26 PHP
PDO预处理语句PDOStatement对象使用总结
Nov 20 #PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 #PHP
PHP中UNIX时间戳和日期间的转换与计算实例
Nov 19 #PHP
PHP中上传多个文件的表单设计例子
Nov 19 #PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 #PHP
PHP图像处理之imagecreate、imagedestroy函数介绍
Nov 19 #PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 #PHP
You might like
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
php写一个函数,实现扫描并打印出自定目录下(含子目录)所有jpg文件名
2017/05/26 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
2015/02/26 Javascript
纯JavaScript实现的分页插件实例
2015/07/14 Javascript
js判断复选框是否选中及选中个数的实现代码
2016/05/30 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
完美实现js焦点轮播效果(二)(图片可滚动)
2017/03/07 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
基于vue 添加axios组件,解决post传参数为null的问题
2018/03/05 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
JavaScript实现异步图像上传功能
2018/07/12 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
layui关闭弹窗后刷新主页面和当前更改项的例子
2019/09/06 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Python内置函数的用法实例教程
2014/09/08 Python
利用Python爬取可用的代理IP
2016/08/18 Python
python WindowsError的错误代码详解
2017/07/23 Python
Python网络爬虫与信息提取(实例讲解)
2017/08/29 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
2018/11/23 Python
Python Matplotlib绘图基础知识代码解析
2020/08/31 Python
简述Html5 IphoneX 适配方法
2018/02/08 HTML / CSS
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
小学语文教研活动总结
2014/07/01 职场文书
先进学校事迹材料
2014/12/30 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
nginx 多个location转发任意请求或访问静态资源文件的实现
2021/03/31 Servers
MySQL中的 inner join 和 left join的区别解析(小结果集驱动大结果集)
2023/05/08 MySQL