当前位置:首页 > PHP教程 > php应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-27 19:02:54 浏览: 评论:0 

这篇文章主要介绍了PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别,需要的朋友可以参考下

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

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

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

绑定一个值到用作预处理的 SQL 语句中的对应命名占位符或问号占位符,代码如下:

  1. <?php 
  2. $stm = $pdo->prepare("select * from users where user = :user"); 
  3. $user = "jack"
  4. //正确 
  5. $stm->bindParam(":user",$user); 
  6. //错误 
  7. $stm->bindParam(":user","jack"); 
  8. //正确 
  9. $stm->bindValue(":user",$user); 
  10. //正确 
  11. $stm->bindValue(":user","jack"); 
  12.  
  13. //所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值。 
  14. ?> 

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

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

  1. <?php 
  2. function  readData ( $dbh ) { 
  3.     $sql  =  'SELECT name, colour, calories FROM fruit' ; 
  4.     try { 
  5.         $stmt  =  $dbh -> prepare ( $sql ); 
  6.         $stmt -> execute (); 
  7.  
  8.         /*  通过列号绑定  */ 
  9.         $stmt -> bindColumn ( 1 ,  $name ); 
  10.         $stmt -> bindColumn ( 2 ,  $colour ); 
  11.  
  12.         /*  通过列名绑定  */ 
  13.         $stmt -> bindColumn ( 'calories' ,  $cals ); 
  14.  
  15.         while ( $row  =  $stmt -> fetch ( PDO :: FETCH_BOUND )) { 
  16.             $data  =  $name  .  "\t"  .  $colour  .  "\t"  .  $cals  .  "\n" ; 
  17.             print  $data ; 
  18.         } 
  19.     } 
  20.     catch ( PDOException $e ) { 
  21.         print  $e -> getMessage (); 
  22.     } 
  23. readData ( $dbh ); 
  24. ?> 

Tags: PDOStatement bindpram bindvalue

分享到: