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

yipeiwu_com6年前PHP代码库

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经典Redis操作类 调用方便,操作简单

/**  * redis操作类  * 说明,任何为false的串,存在redis中都是空串。  * 只有在key不存在时,才会返回fa...

php str_pad 函数用法简介

语法 str_pad(string,length,pad_string,pad_type) 参数 描述 string 必需。规定要填充的字符串。 length 必需。规定新字符串的长度。...

PHP DB 数据库连接类定义与用法示例

本文实例讲述了PHP DB 数据库连接类定义与用法。分享给大家供大家参考,具体如下: 声明: 近期观看了一节 PHP 消息队列视频,对于讲师WiconWang提供的代码,在此分享一下,希...

ThinkPHP中实例Model方法的区别说明

在TP中,我们可以用下面两种方法去创建一个数据表的映射对象(我暂时用到的) 第一种:$Test = D('Test') 第二种:$Test = new Model('Test') 虽然这...

PHP基于SPL实现的迭代器模式示例

本文实例讲述了PHP基于SPL实现的迭代器模式。分享给大家供大家参考,具体如下: 现在有这么两个类,Department部门类、Employee员工类: //部门类 class De...