PDOStatement::bindColumn

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

PDOStatement::bindColumn将列绑定到 PHP 变量

描述

public PDOStatement::bindColumn(
    string|int $column,
    mixed &$var,
    int $type = PDO::PARAM_STR,
    int $maxLength = 0,
    mixed $driverOptions = null
): bool

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

注意:

由于在语句执行之前,PDO 并不总是可以获得有关列的信息,因此便携式应用程序应在调用 PDOStatement::execute() 之后调用此函数。

但是,为了能够在使用 PgSQL 驱动程序 时将 LOB 列绑定为流,应用程序应在调用 PDOStatement::execute() 之前调用此方法,否则大型对象 OID 将作为整数返回。

参数

column

结果集中的列号(从 1 开始索引)或列名。如果使用列名,请注意名称应与驱动程序返回的列的区分大小写匹配。

var

将列绑定到的 PHP 变量的名称。

type

参数的数据类型,由 PDO::PARAM_* 常量 指定。

maxLength

预分配的提示。

driverOptions

驱动程序的可选参数。

返回值

成功时返回 true,失败时返回 false

错误/异常

如果属性 PDO::ATTR_ERRMODE 设置为 PDO::ERRMODE_WARNING,则发出级别为 E_WARNING 的错误。

如果属性 PDO::ATTR_ERRMODE 设置为 PDO::ERRMODE_EXCEPTION,则抛出 PDOException

示例

示例 #1 将结果集输出绑定到 PHP 变量

将结果集中的列绑定到 PHP 变量是使每个行中包含的数据立即可用于应用程序的有效方法。以下示例演示了 PDO 如何允许您使用各种选项和智能默认值绑定和检索列。

<?php
$stmt
= $dbh->prepare('SELECT name, colour, calories FROM fruit');
$stmt->execute();

/* 按列号绑定 */
$stmt->bindColumn(1, $name);
$stmt->bindColumn(2, $colour);

/* 按列名绑定 */
$stmt->bindColumn('calories', $cals);

while (
$stmt->fetch(PDO::FETCH_BOUND)) {
print
$name . "\t" . $colour . "\t" . $cals . "\n";
}

上面的示例将输出类似于以下内容

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

参见

添加说明

用户贡献说明 1 说明

Moses Blumenstiel
3 年前
我想有效地绑定列,然后将所有内容放入一个数组中。

<?php

$columns
= array(
'DEVICE_CONFIG' => '',
'CONSUMABLE_INFO' => '',
'DEVICE_UNIQUE_ID' => '',
'STATUS' => '',
'STATUS_MESSAGE' => '',
'LAST_MESSAGE_TIME' => '',
'DEVICE_DESCRIPTION' => ''
);

$statement = $this->connection->prepare($sql);

$statement->execute();

$x = 1;
foreach(
$columns as $column => $index){
$
$column = $index;
eval(
'$statement->bindColumn(' . $x++ . ', $' . $column . ');');
}

$output= array();
while(
$statement->fetch(\PDO::FETCH_BOUND)){
$temp = array();
foreach(
$columns as $columnName => $val){
eval(
"\$data = \$$columnName;");
$temp[$columnName] = $data;
}
$output[] = $temp;
}
?>
To Top