PHP Conference Nagoya 2025

odbc_tables

(PHP 4, PHP 5, PHP 7, PHP 8)

odbc_tablesObtém a lista de nomes de tabelas armazenadas em uma fonte de dados específica

Descrição

odbc_tables(
    Odbc\Connection $odbc,
    ?string $catalog = null,
    ?string $schema = null,
    ?string $table = null,
    ?string $types = null
): Odbc\Result|false

Lista todas as tabelas no intervalo solicitado.

Para suportar a enumeração de qualificadores, proprietários e tipos de tabela, a seguinte semântica especial para catalog, schema, table e table_type estão disponíveis:

  • Se catalog for um caractere único de porcentagem (%) e schema e table forem strings vazias, o conjunto de resultados conterá uma lista de qualificadores válidos para a fonte de dados. (Todas as colunas, exceto a coluna TABLE_QUALIFIER, contêm NULLs.)
  • Se schema for um caractere único de porcentagem (%) e catalog e table forem strings vazias, então o conjunto de resultados conterá uma lista de proprietários válidos para a fonte de dados. (Todas as colunas, exceto a coluna TABLE_OWNER, contêm NULLs.)
  • Se table_type for um caractere único de porcentagem (%) e catalog, schema e table forem strings vazias, então o conjunto de resultados contém uma lista de tipos de tabela válidos para a fonte de dados. (Todas as colunas, exceto a coluna TABLE_TYPE, contêm NULLs.)

Parâmetros

odbc

O objeto da conexão ODBC. Consulte odbc_connect() para obter detalhes.

catalog

O catálogo ('qualifier' na linguagem ODBC 2).

schema

O esquema ('owner' na linguagem ODBC 2). Este parâmetro aceita os seguintes padrões de pesquisa: % para corresponder a zero ou mais caracteres e _ para corresponder a um único caractere.

table

O nome. Este parâmetro aceita os seguintes padrões de pesquisa: % para corresponder a zero ou mais caracteres e _ para corresponder a um único caractere.

types

Se table_type não for uma string vazia, este parâmetro deverá conter uma lista de valores separados por vírgula para os tipos de interesse; cada valor pode ser colocado entre aspas simples (') ou sem aspas. Por exemplo, 'TABLE','VIEW' ou TABLE, VIEW. Se a fonte de dados não suportar um tipo de tabela especificado, odbc_tables() não retornará nenhum resultado para esse tipo.

Valor Retornado

Retorna um objeto de resultado ODBC contendo as informações ou false em caso de falha.

O conjunto de resultados possui as seguintes colunas:

  • TABLE_CAT
  • TABLE_SCHEM
  • TABLE_NAME
  • TABLE_TYPE
  • REMARKS
Drivers podem listar colunas adicionais.

O conjunto de resultados é ordenado por TABLE_TYPE, TABLE_CAT, TABLE_SCHEM e TABLE_NAME.

Registro de Alterações

Versão Descrição
8.4.0 odbc agora espera uma instância de Odbc\Connection; anteriormente, esperava um resource.
8.4.0 Esta função agora retorna uma instância de Odbc\Result; anteriormente, retornava um resource.
8.0.0 schema, table e types agora podem ser nulos.

Exemplos

Exemplo #1 Listando tabelas em um catálogo

<?php
$conn
= odbc_connect($dsn, $user, $pass);
$tables = odbc_tables($conn, 'SalesOrders', 'dbo', '%', 'TABLE');
while ((
$row = odbc_fetch_array($tables))) {
print_r($row);
break;
// outras linhas omitidas por questões de brevidade
}
?>

O exemplo acima produzirá algo semelhante a:

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

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 3 notes

up
2
liquidicee at hotmail dot com
23 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
0
narcomweb at wanadoo dot fr
19 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
iggvopvantoodlwin
20 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.
To Top