PHP 5.5.16 is released

PDOStatement::getColumnMeta

(PHP 5 >= 5.1.0, PECL pdo >= 0.2.0)

PDOStatement::getColumnMeta Devuelve metadatos de una columna de un conjunto de resultados

Descripción

public array PDOStatement::getColumnMeta ( int $column )
Advertencia

Esta función ha sido declarada EXPERIMENTAL. Su comportamiento, su nombre y la documentación que le acompaña puede cambiar sin previo aviso en futuras versiones de PHP. Use esta función bajo su propio riesgo.

Devuelve los metadatos de una columna de índice basado 0 de un conjunto de resultados como un array asociativo.

Advertencia

No todos los controlades de PDO admiten PDOStatement::getColumnMeta().

Parámetros

column

La columna de índice basado en 0 del conjunto de resultados.

Valores devueltos

Devuelve un array asociativo que contiene los siguientes valores que representan los metadatos de una única columna:

Metadatos de la columna
Nombre Valor
native_type El tipo nativo de PHP usado para representar el valor de la columna.
driver:decl_type El tipo de SQL usado para representar el valor de la columna de la base de datos. Si la columna del conjunto de resultado es el resultado de una función, este valor no es devuelto por PDOStatement::getColumnMeta().
flags Cualquier bandera establecida para esta columna.
name El nombre de esta columna tal como es devuelto por la base de datos.
table El nombre de la tabla de esta columna tal como es devuelto por la base de datos.
len La longitud de esta columna. Normalmente es -1 para tipos distintos de decimales de punto flotante.
precision La precisión numérica de esta columna. Normalmente es 0 para tipos distintos de decimales de punto flotante.
pdo_type El tipo de esta columna tal como está representado por las constantes PDO::PARAM_*.

Devuelve FALSE si la columna solicitada no exite en el conjunto de resultados, o si no existe dicho conjunto.

Historial de cambios

Versión Descripción
5.2.3 El campo table

Ejemplos

Ejemplo #1 Recuperar metadatos de una columna

El siguiente ejemplo muestra el resultado de recuperar los metadatos para una única columna generada por una función (COUNT) en un controlador PDO_SQLITE.

<?php
$select 
$DB->query('SELECT COUNT(*) FROM fruit');
$meta $select->getColumnMeta(0);
var_dump($meta);
?>

El resultado del ejemplo sería:

array(6) {
  ["native_type"]=>
  string(7) "integer"
  ["flags"]=>
  array(0) {
  }
  ["name"]=>
  string(8) "COUNT(*)"
  ["len"]=>
  int(-1)
  ["precision"]=>
  int(0)
  ["pdo_type"]=>
  int(2)
}

Ver también

add a note add a note

User Contributed Notes 2 notes

up
2
colin at fusionbox dot com
5 years ago
This method is supported in the MySQL 5.0+ driver.  It can be used for object hydration:

<?php

$pdo_stmt
= $dbh->execute('SELECT discussion.id, discussion.text, comment.id, comment.text FROM discussions LEFT JOIN comments ON comment.discussion_id = discussion.id');

foreach(
range(0, $pdo_stmt->columnCount() - 1) as $column_index)
{
 
$meta[] = $pdo_stmt->getColumnMeta($column_index);
}

while(
$row = $pdo_stmt->fetch(PDO::FETCH_NUM))
{
  foreach(
$row as $column_index => $column_value)
  {
   
//do something with the data, using the ids to establish the discussion.has_many(comments) relationship.
 
}
}

?>

If you are building an ORM, this method is very useful to support more natural SQL syntax.  Most ORMs require the column names to be aliases so that they can be parsed and turned into objects that properly represent has_one, has_many, many_to_many relationships.
up
1
asohn aircanopy net
6 years ago
I found a short discussion related to this function at
http://www.sitepoint.com/forums/showthread.php?t=497257

I haven't tried it (yet?) but hopefully someone can find it useful.
To Top