PDOStatement::bindColumn

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

PDOStatement::bindColumn Vincula una columna a una variable de PHP

Descripción

public PDOStatement::bindColumn(
    mixed $column,
    mixed &$param,
    int $type = ?,
    int $maxlen = ?,
    mixed $driverdata = ?
): bool

PDOStatement::bindColumn() se encarga de tener una variable en particular vinculada a una columna dada en el conjunto de resultados desde una consulta. Cada llamada a PDOStatement::fetch() o a PDOStatement::fetchAll() actualizará todas las variables que estén vinculadas a columnas.

Nota:

Ya que la información sobre las columnas no siempre está disponible para PDO hasta que la sentencia sea ejecutada, las aplicaciones portables debería invocar esta función despúes de PDOStatement::execute().

Sin embargo, para poder vincular una columna LOB como un flujo cuando se usa el controlador PgSQL, las aplicaciones deberían invocar este método antes de llamar a PDOStatement::execute(), si no, el OID del objeto grande será devuelto como un número entero.

Parámetros

column

El número (de primer índice 1) o el nombre de la columna del conjunto de resultados. Si se utiliza el nombre de la columna, tenga en cuenta que el nombre debería coincidir en mayúsculas/minúsculas con la columna, tal como la devuelve el controlador.

param

El nombre de la variable de PHP a la que vincular la columna.

type

El tipo de datos del parámetro, especificado por las constantes PDO::PARAM_*.

maxlen

La longitud máxima sugerida para la preasingnación.

driverdata

Parámetro/s opcional/es para el controlador.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Ejemplos

Ejemplo #1 Vincular la salida de un conjunto de resultados a variables de PHP

La vinculación de columnas del conjunto de resultados a variables de PHP es una forma efectiva de hacer que los datos contenidos en cada fila estén disponibles de inmediato para la aplicación. El siguiente ejemplo demuestra cómo PDO permite vincular y recuperar columnas con varias opciones y con valores predeterminados inteligentes.

<?php
function readData($gbd) {
$sql = 'SELECT name, colour, calories FROM fruit';
try {
$sentencia = $gbd->prepare($sql);
$sentencia->execute();

/* Vincular por número de columna */
$sentencia->bindColumn(1, $nombre);
$sentencia->bindColumn(2, $color);

/* Vincular por nombre de columna */
$sentencia->bindColumn('calories', $calorías);

while (
$fila = $sentencia->fetch(PDO::FETCH_BOUND)) {
$datos = $nombre . "\t" . $color . "\t" . $calorías . "\n";
print
$datos;
}
}
catch (
PDOException $e) {
print
$e->getMessage();
}
}
readData($gbd);
?>

El resultado del ejemplo sería:

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

Ver también

add a note add a note

User Contributed Notes 1 note

up
-11
Moses Blumenstiel
3 years ago
I wanted to efficiently bind columns and then put everything into one array.

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