DB_common::tableInfo()

DB_common::tableInfo() – Récupère les informations sur les colonnes d'une table ou d'un résultat de requête

Synopsis

array tableInfo ( mixed $result , integer $mode = = null )

Description

Récupère les informations sur les colonnes d'une table ou d'un résultat de requête.

Parameter

mixed $result

Objet DB_result depuis une requête ou une chaîne contenant le nom d'une table.

Si le nom de la table nécessite d'être délimité (i.e. : le nom est un mot réservé ou contient un espace), utilisez la méthode quoteIdentifier() sur le nom de la table lorsque vous le passez.

Ce paramètre peut aussi être un identifiant de ressource de résultats mais faire cela est devenu obsolète.

integer $mode

une des constantes de modes d'informations de table.

Return value

array - un tableau associatif d'informations sur la table ou un objet DB_Error en cas d'échec.

Le contenu du tableau dépend du paramètre $mode .

Les noms des tables et des colonnes doivent être en minuscule si le mode de portabilité DB_PORTABILITY_LOWERCASE est actif.

L'élément flags contient une liste séparée par un espace d'informations additionnelles sur la colonne. Si le DBMS est capable de reporter la valeur par défaut de la colonne, la valeur est passée via la fonction rawurlencode() pour éviter les problèmes causés par d'éventuel espace dans la valeur.

La plupart des DBMS fournit uniquement les éléments table et flags si $result est un nom de table. Uniquement fbsql et mysql fournissent la totalité des informations depuis les requêtes.

L'élément type contient le type retourné par le DBMS. Il varie suivant les DBMS.

Modes tableInfo

Cette section décrit le format du tableau retourné et comment il varie dépendamment du $mode utilisé lors de l'appel de la fonction.

Le résultat simple ci-dessous est basé sur cette requête :

SELECT tblFoo.fldID, tblFoo.fldPhone, tblBar.fldId
  FROM tblFoo
  JOIN tblBar ON tblFoo.fldId = tblBar.fldId;

NULL ou 0


[0] => Array (
  [table] => tblFoo
  [name] => fldId
  [type] => int
  [len] => 11
  [flags] => primary_key not_null
)
[1] => Array (
  [table] => tblFoo
  [name] => fldPhone
  [type] => string
  [len] => 20
  [flags] =>
)
[2] => Array (
  [table] => tblBar
  [name] => fldId
  [type] => int
  [len] => 11
  [flags] => primary_key not_null
)

DB_TABLEINFO_ORDER

En plus des informations trouvées dans la sortie par défaut, une note sur le nombre de colonnes est fourni par l'élément num_fields tandis que l'élément order fournit un tableau dont les noms des colonnes sont les clés et leurs numéros d'index (correspondant aux clés dans le résultat par défaut) sont les valeurs.

Si un jeu de résultats a des noms de champs identiques, le dernier sera utilisé.


[num_fields] => 3
[order] => Array (
  [fldId] => 2
  [fldTrans] => 1
)

DB_TABLEINFO_ORDERTABLE

Similaire à DB_TABLEINFO_ORDER mais ajoute plus de dimensions au tableau dont les noms des tables sont les clés et les noms des champs, les sous-clés. Ceci est utile pour les requêtes qui utilisent les jointures qui ont des noms de champs identiques.


[num_fields] => 3
[ordertable] => Array (
  [tblFoo] => Array (
      [fldId] => 0
      [fldPhone] => 1
  )
  [tblBar] => Array (
      [fldId] => 2
  )
)

DB_TABLEINFO_FULL

Contient les informations de DB_TABLEINFO_ORDER et de DB_TABLEINFO_ORDERTABLE.

Les constantes de modes tableInfo peuvent être cumulées en utilisant le signe pipe (|).

Throws

Possible PEAR_Error values
Code erreur Message d'erreur Raison Solution
DB_ERROR_NOT_CAPABLE DB backend not capable Le driver ne supporte pas cette fonctionnalité. Utilisez un autre système de base de données si vous avez absolument besoin de cette fonctionnalité.
DB_ERROR_NEED_MORE_DATA insufficient data supplied La donnée passée dans le paramètre $result n'est pas un nom de table valide ou un identifiant de résultat valide. Vérifiez si vousn'avez pas fais d'erreur de frappes dans le nom de la table ou bien que la requête s'exécute correctement.
DB_ERROR_NODBSELECTED no database selected Aucune base de données n'a été choisie. Vérifiez le DSN dans la fonction connect().
can't distinguish duplicate field names Le résultat de la requête conient de multiples colonnes avec le même nom. L'extension PHP Informix gère les colonnes dont les noms sont identiques en écrasant les informations des anciennes colonnes. Toutefois, la fonction tableInfo() est incapable de représenter proprement ces jeux de résultats. Utilisez des alias pour les colonnes qui ont des noms identiques.

Note

This function can not be called statically.

tableInfo() n'est pas portable car tous les drivers ne supportent pas cette méthode. La plupart des DBMS est incapable de déterminer les noms des tables depuis les résultats des requêtes et les données méta retournées par chaque système de base de données varient énormément.

Example

Trouver les informations d'une table

<?php
// Vous devez avoir un objet DB valide nommé $db...
$info $db->tableInfo('tablename');
print_r($info);
?>

Trouver les informations sur un résultat de requête

<?php
// Vous devez avoir un objet DB valide nommé $db...
$res  =& $db->query('SELECT * FROM tablename');
$info =  $db->tableInfo($res);
print_r($info);
?>

Avant la version 1.6.0, la méthode tableInfo() faisait partie de la classe DB_result, vous deviez donc l'appeler comme ceci :

<?php
// Vous devez avoir un objet DB valide nommé $db...
$res  =& $db->query('SELECT * FROM tablename');
$info =  $res->tableInfo();  // <---- obsolète
print_r($info);
?>

Configure les options de PEAR DB au moment de l'exécution (Previous) Ensemble des informations des résultats DB (Next)
Last updated: Sun, 29 Aug 2010 — Download Documentation
Do you think that something on this page is wrong? Please file a bug report or add a note.
View this page in:

User Notes:

There are no user contributed notes for this page.