PDOStatement
在线手册:中文  英文

PDOStatement::bindColumn

(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)

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

说明

bool PDOStatement::bindColumn ( mixed $column , mixed &$param [, int $type [, int $maxlen [, mixed $driverdata ]]] )

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

Note:

在语句执行前 PDO 有关列的信息并非总是可用,可移植的应用应在 PDOStatement::execute() 之后 调用此函数(方法)。

但是,当使用 PgSQL 驱动 时,要想能绑定一个 LOB 列作为流,应用程序必须在调用 PDOStatement::execute() 之前 调用此方法,否则大对象 OID 作为一个整数返回。

参数

column

结果集中的列号(从1开始索引)或列名。如果使用列名,注意名称应该与由驱动返回的列名大小写保持一致。

param

将绑定到列的 PHP 变量名称

type

通过 PDO::PARAM_* 常量指定的参数的数据类型。

maxlen

预分配提示。

driverdata

驱动的可选参数。

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

范例

Example #1 把结果集输出绑定到 PHP 变量

绑定结果集中的列到PHP变量是一种使每行包含的数据在应用程序中立即可用的有效方法。下面的例子演示了 PDO 怎样用多种选项和缺省值绑定和检索列。

<?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);
?>

以上例程会输出:

apple   red     150
banana  yellow  175
kiwi    green   75
orange  orange  150
mango   red     200
strawberry      red     25

参见


PDOStatement
在线手册:中文  英文

用户评论:

daniel dot baulig at gmx dot de (2010-06-17 23:54:51)

Pleas note the following:
If you try binding a column name, that is not existent in the result set referenced by your PDOStatement there will be a warning issued regardless of your PDO ATTR_ERRMODE setting. You can supress that warning using the @ supression operator, but there is no other way of finding out if an column you try to bind actually exist other than inspecting error_get_last( ) and it's fellow companions.
Also refer to this bug report http://bugs.php.net/bug.php?id=52104

易百教程