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
PDOStatement::bindColumn
(PHP 5 >= 5.1.0, PECL pdo >= 0.1.0)
PDOStatement::bindColumn — Vincula una columna a una variable de PHP
Descripción
$column
, mixed &$param
[, int $type
[, int $maxlen
[, mixed $driverdata
]]] )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
- PDOStatement::execute() - Ejecuta una sentencia preparada
- PDOStatement::fetch() - Obtiene la siguiente fila de un conjunto de resultados
- PDOStatement::fetchAll() - Devuelve un array que contiene todas las filas del conjunto de resultados
- PDOStatement::fetchColumn() - Devuelve una única columna de la siguiente fila de un conjunto de resultados
