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提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法

没有找到 PHP 扩展 mbstring,而您现在好像在使用多字节字符集。没有 mbstring 扩展的 phpMyAdmin 不能正确分割字符串,可能产生意想不到的结果。 无法加载mc...

php弹出提示框的是实例写法

php中弹出对话框的方法如下,一般,在提交信息后需要弹出对话框提示,之后可以自动关闭对话框,弹出对话框有下面集中方法,其实都是利用javascript中的alert()方法。提示结束后关...

浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑

前言 绝大多数网站都集成了第三方登录,降低了注册门槛,增强了用户体验。最近看了看 QQ 互联上 QQ 登录的接口文档。接入 QQ 登录的一般流程呢,是这样的:先申请开发者 -> 然...

PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例

本文实例讲述了PHP基于正则批量替换Img中src内容实现获取缩略图的功能。分享给大家供大家参考,具体如下: 这里PHP用正则批量替换Img中src内容,实现获取图片路径缩略图的功能 网...

PHP的介绍以及优势详细分析

介绍: PHP 是一种HTML 内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛...