©
This document uses PHP Chinese website manual Release
(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
PDOStatement::bindColumn — 绑定一列到一个 PHP 变量
$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
[#1] Spaceeman [2015-10-01 12:14:12]
// What I've added function :
//
function PDO_statement_bind_columns(
$statement, &$var1,
&$var2 = null, &$var3 = null, &$var4 = null, &$var5 = null, &$var6 = null, &$var7 = null,
&$var8 = null, &$var9 = null, &$var10 = null, &$var11 = null, &$var12 = null, &$var13 = null,
&$var14 = null, &$var15 = null, &$var16 = null, &$var17 = null, &$var18 = null, &$var19 = null,
&$var20 = null, &$var21 = null, &$var22 = null, &$var23 = null, &$var24 = null, &$var25 = null,
&$var26 = null, &$var27 = null, &$var28 = null, &$var29 = null, &$var30 = null, &$var31 = null,
&$var32 = null, &$var33 = null, &$var34 = null, &$var35 = null, &$var36 = null, &$var37 = null,
&$var38 = null, &$var39 = null, &$var40 = null, &$var41 = null, &$var42 = null, &$var43 = null
)
{
$numargs = func_num_args();
for( $i = 1 ; $i < $numargs ; ++$i )
{
$argname = 'var'.$i;
if( ! $statement->bindColumn( $i, $$argname ) ) throw new \Exception("statement->bindColumn $i");
}
}