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

 更新时间:2014年11月20日 09:46:14   投稿:junjie  
这篇文章主要介绍了PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别,需要的朋友可以参考下

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使用PDO执行SQL语句的方法分析

    php使用PDO执行SQL语句的方法分析

    这篇文章主要介绍了php使用PDO执行SQL语句的方法,结合实例形式分析了PDO常用SQL函数功能及使用技巧,需要的朋友可以参考下
    2017-02-02
  • PHP日期函数date格式化UNIX时间的方法

    PHP日期函数date格式化UNIX时间的方法

    这篇文章主要介绍了PHP日期函数date格式化UNIX时间的方法,实例分析了php中date函数的使用技巧,需要的朋友可以参考下
    2015-03-03
  • PHP实现15位身份证号转18位的方法分析

    PHP实现15位身份证号转18位的方法分析

    这篇文章主要介绍了PHP实现15位身份证号转18位的方法,结合实例形式分析了15位身份证号转18位的相关原理与php实现技巧,需要的朋友可以参考下
    2019-10-10
  • php数字每三位加逗号的功能函数

    php数字每三位加逗号的功能函数

    这篇文章主要介绍了php数字每三位加逗号的功能函数,想知道如何做到数字每三位加逗号的朋友可以参考下
    2015-10-10
  • 从MySQL数据库表中取出随机数据的代码

    从MySQL数据库表中取出随机数据的代码

    这个例子是用于一个简单的应用开发了,意思就是把现在表中的所有数据我们随机读出来一次之后再进行随机保存到另一个表,从而达到了记录随机的功能
    2007-09-09
  • php遍历类中包含的所有元素的方法

    php遍历类中包含的所有元素的方法

    这篇文章主要介绍了php遍历类中包含的所有元素的方法,涉及php中getConstants方法及数组操作的相关技巧,需要的朋友可以参考下
    2015-05-05
  • $_GET[''goods_id'']+0 的使用详解

    $_GET[''goods_id'']+0 的使用详解

    本篇文章是对$_GET['goods_id']+0 的使用进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】

    PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】

    这篇文章主要介绍了PHP基于MySQLI函数封装的数据库连接工具类,结合实例形式分析了php封装mysqli函数实现的数据库操作类定义及连接、增删改查数据库等基本操作用法,需要的朋友可以参考下
    2017-08-08
  • Windows上PHP安装redis扩展和igbinary扩展

    Windows上PHP安装redis扩展和igbinary扩展

    php扩展就是php核心并不支持的功能,通过安装扩展增加PHP的功能,在Windows上有两种加载PHP扩展的方式:把扩展编译进 PHP,或者加载 DLL,加载预编译的扩展是更简单更被推荐的方式,要加载某扩展,需要在系统中有其相对应的“.dll”文件
    2023-10-10
  • 简单谈谈PHP中的Reload操作

    简单谈谈PHP中的Reload操作

    通常修改了 PHP 的配置后,为了让修改生效会执行 reload,而不是 restart,但最近在使用Reload操作的时候发现了502错误,想着还是要重新思考这个问题。所以这篇文章主要给大家介绍了关于PHP中Reload操作的内容,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-12-12

最新评论