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 中检查或过滤IP地址的实现代码
Nov 27 PHP
PHP缓存技术的多种方法小结
Aug 14 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
Jan 17 PHP
基于PHP生成静态页的实现方法
May 10 PHP
解析php开发中的中文编码问题
Aug 08 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
一个php短网址的生成代码(仿微博短网址)
May 07 PHP
php之static静态属性与静态方法实例分析
Jul 30 PHP
使用xampp搭建运行php虚拟主机的详细步骤
Oct 21 PHP
thinkphp微信开发(消息加密解密)
Dec 02 PHP
关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
Jul 13 PHP
PHP number_format函数原理及实例解析
Jul 14 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
Home Coffee Roasting
2021/03/03 咖啡文化
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
利用ajax和PHP实现简单的流程管理
2017/03/23 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
jquery中获取元素里某一特定子元素的代码
2014/12/02 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
2016/08/24 Javascript
js 数组详细操作方法及解析合集
2018/06/01 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
layui实现下拉复选功能的例子(包括数据的回显与上传)
2019/09/24 Javascript
Openlayers实现测量功能
2020/09/25 Javascript
原生JavaScript实现轮播图
2021/01/10 Javascript
从零学Python之入门(四)运算
2014/05/27 Python
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Ubuntu16.04/树莓派Python3+opencv配置教程(分享)
2018/04/02 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Python 获取主机ip与hostname的方法
2018/12/17 Python
Pyqt5 基本界面组件之inputDialog的使用
2019/06/25 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
python实现双色球随机选号
2020/01/01 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
浅谈Selenium 控制浏览器的常用方法
2020/12/04 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
英国快时尚女装购物网站:PrettyLittleThing
2018/08/15 全球购物
最新奶茶店创业计划书范文
2014/02/08 职场文书
2014年学生会工作总结
2014/11/07 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
MySQL创建表操作命令分享
2022/03/25 MySQL