(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
PDOStatement::bindColumn — Связывает столбец с PHP переменной
$column
, mixed &$param
[, int $type
[, int $maxlen
[, mixed $driverdata
]]] )PDOStatement::bindColumn() привязывает переменную к заданному столбцу в результирующем наборе запроса. Каждый вызов PDOStatement::fetch() или PDOStatement::fetchAll() будет обновлять все переменные, задавать им значения столбцов, с которыми они связаны.
Замечание:
В связи с тем, что информация о столбцах результирующего набора запроса не всегда доступна объекту PDO, пока запрос не будет запущен, приложениям следует вызывать этот метод после выхова PDOStatement::execute().
Однако, при работе с PgSQL драйвером, когда привязывается столбец с LOB данными, приложению необходимо вызывать этот метод до вызова PDOStatement::execute(). В противном случае идентификатор большого объекта OID будет иметь тип integer.
column
Номер столбца (начиная с 1) или его имя в результирующем наборе запроса. Используя имя столбца, будьте внимательны, имя должно быть в том же регистре, в каком оно выдано драйвером.
param
Имя PHP переменной, к которой требуется привязать столбец.
type
Тип данных параметра, заданный одной из констант PDO::PARAM_*.
maxlen
Подсказка для предварительного выделения памяти под переменную.
driverdata
Дополнительные параметры для драйвера.
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
Пример #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