The PHP Online Conference 2021

odbc_tables

(PHP 4, PHP 5, PHP 7)

odbc_tablesListe les tables d'une source

Description

odbc_tables ( resource $connection_id [, string $catalog [, string $schema [, string $name [, string $types ]]]] ) : resource

Liste les tables d'une source.

Pour supporter les énumérations de qualificateurs propriétaires et types de table, la sémantique suivante pour les paramètres catalog, schema, name et table_type est disponible :

  • Si catalog est un signe de pourcentage (%), et schema et name sont des chaînes vides, alors le résultat contient la liste des qualifiés valides pour la source (toutes les colonnes hormis TABLE_QUALIFIER contiennent NULL).
  • Si schema est un signe de pourcentage (%), et catalog et name sont des chaînes vides, alors le résultat contient la liste des propriétaires de la source (toutes les colonnes hormis TABLE_OWNER contiennent NULL).
  • Si table_type est un signe de pourcentage (%), et catalog, schema et name sont des chaînes vides, alors le résultat contient la liste des types de tables de la source (toutes les colonnes hormis TABLE_TYPE contiennent NULL).

Liste de paramètres

connection_id

L'identifiant de connexion ODBC, voir la documentation de la fonction odbc_connect() pour plus de détails.

catalog

Le catalogue ('calificatif' dans le jargon ODBC 2).

schema

Le schéma ('propriétaire' dans le jargon ODBC 2). Ce paramètre accepte les masques de recherche suivants : % pour chercher zéro ou plusieurs caractères, et _ pour chercher un seul caractère.

name

Le nom. Ce paramètre accepte les masques de recherche suivants : % pour chercher zéro ou plusieurs caractères, et _ pour chercher un seul caractère.

types

Si table_type n'est pas une chaîne vide, il doit contenir une liste de valeurs, séparées par des virgules, qui représentent les types recherchés. Chaque valeur peut être insérée entre guillemets simples ('), ou sans guillemets. Par exemple, 'TABLE','VIEW' ou TABLE, VIEW. Si la source de données ne supporte pas un type de table donné, odbc_tables() ne retournera aucun résultat pour ce type.

Valeurs de retour

Retourne un identifiant de résultat ODBC contenant les informations ou FALSE si une erreur survient.

Le jeu de résultat contient les colonnes suivantes :

  • TABLE_CAT
  • TABLE_SCHEM
  • TABLE_NAME
  • TABLE_TYPE
  • REMARKS
Les pilotes peuvent signaler des colonnes supplémentaires.

Le jeu de résultat est ordonné par TABLE_TYPE, TABLE_CAT, TABLE_SCHEM and TABLE_NAME.

Exemples

Exemple #1 Liste les Tables dans un Catalogue

<?php
$conn 
odbc_connect($dsn$user$pass);
$tables odbc_tables($conn'SalesOrders''dbo''%''TABLE');
while ((
$row odbc_fetch_array($tables))) {
    
print_r($row);
    break; 
// further rows omitted for brevity
}
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Array
(
    [TABLE_CAT] => SalesOrders
    [TABLE_SCHEM] => dbo
    [TABLE_NAME] => Orders
    [TABLE_TYPE] => TABLE
    [REMARKS] =>
)

Voir aussi

add a note add a note

User Contributed Notes 4 notes

up
1
iggvopvantoodlwin
16 years ago
With regard to the note made on results not working.
Test the database with the easy:

odbc_result_all(odbc_tables($db));

$db is obviously a connected batadase. Then start to experiment:

if(!$odbcr=odbc_tables($db,"udb","", "%", "'TABLE'"))

"udb" is the DNS - aka 'name of my ODBC database in the Windows ODBC thingamy'. In result_all the full path was shown but I just used the name I assigned; either should work.

The second parameter "" is listed by result_all as "TABLE_SCHEM" and all items were "NULL", so I have put "".

The third parameter is "%". According to result_all this col is "TABLE_NAME", so I could have put the name of one of my tables, i.e. "Address".

In my case I have an Access database setup with several tables. In ODBC I have created a link. Running the all on everything result above shows a set of system tables which I do not need to know about at this point so I look at the result and then build my new table check using the "TABLE" string as the tables I am interested in are listed as "TABLE" under their "TABLE_TYPE" column.
up
0
narcomweb at wanadoo dot fr
14 years ago
Here a Code for listing Table names
<?php
$dbh
= odbc_connect($dsn, $user, $pwd);

  
$result = odbc_tables($dbh);

  
$tables = array();
   while (
odbc_fetch_row($result)){
     if(
odbc_result($result,"TABLE_TYPE")=="TABLE")
       echo
"<br>".odbc_result($result,"TABLE_NAME");

   }
?>
You don't have views or System tables with.
Only simple tables in your database.
up
0
liquidicee at hotmail dot com
19 years ago
Here's how to get a list of all the tables in your database.. with an actual example of how its done and how to get the results.. and you don't need to put in schema and all that other crap

<?php
$conn
= odbc_connect("$database", "$username", "$password");
$tablelist = odbc_tables($conn);
while (
odbc_fetch_row($tablelist)) {
if (
odbc_result($tablelist, 4) == "TABLE")
echo
odbc_result($tablelist, 3) ."<br>";
}
?>

to understand what the above is doing,
use odbc_result_all($tablelist); this will show you EVERYTHING returned by odbc_tables() then you can look through it and see better how odbc_tables() works and what exactly it returns in the string to get a better idea on how to deal with it.
it would have saved me alot of time if i would have just taken a look at the full string returned by odbc_tables(), so i suggest you take the minute or two and look... here is an example of how to do it..which would have been helpful for me ;x.

<?php
$conn
= odbc_connect("$database", "$username", "$password");
$tablelist = odbc_tables($conn);
while (
odbc_fetch_row($tablelist)) {
echo
odbc_result_all($tablelist);
}
?>

hopefully this will help some people.. i have alot more to add about this but no time :(
so again hope this helps.
Liquidice
up
-4
pmains at ux dot com
15 years ago
This probably works for a variety of formats, but if you want a list of *just* the table names from an SQL dsn source (I'm using MSSQL), here's the code.

<?php

# ... assign $dsn, $uid, & $pwd ...

$dbh = odbc_connect($dsn, $uid, $pwd);

   
$result = odbc_tables($dbh);
   
   
$tables = array();
    while (
odbc_fetch_row($result))
       
array_push($tables, odbc_result($result, "TABLE_NAME") );
   
    foreach(
$tables as $t ) {
        echo
"$t\n";   
    }

?>
To Top