PHP 8.4.2 Released!

odbc_tables

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

odbc_tablesПолучает список имён таблиц, которые хранятся в источнике данных

Описание

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

Функция перечисляет таблицы в запрошенном диапазоне.

Для поддержки перечисления квалификаторов, владельцев и типов таблиц доступна следующая специальная семантика для параметром catalog, schema, table и table_type:

  • Набор результатов будет содержать список допустимых квалификаторов для источника данных (все столбцы, кроме столбца TABLE_QUALIFIER, содержат NULL), если значение аргумента catalog равно символу процента (%), а в аргументах schema и table передали пустые строки.
  • Набор результатов будет содержать список допустимых владельцев для источника данных (все столбцы, кроме столбца TABLE_OWNER, содержат NULL), если значение аргумента schema равно символу процента (%), а в аргументы catalog и table передали пустые строки.
  • Набор результатов будет содержать список допустимых типов таблиц для источника данных (все столбцы, кроме столбца TABLE_TYPE, содержат NULL), если значение аргумента table_type равно символу процента (%), а в аргументах catalog, schema и table передали пустые строки.

Список параметров

odbc

Объект ODBC-соединения. Подробнее о коннекторе рассказывает описание функции odbc_connect().

catalog

Каталог ('qualifier' на языке ODBC 2).

schema

Схема ('owner' на языке ODBC 2). Параметр принимает следующие шаблоны поиска: %, который соответствует нулю или более символам, и _, который соответствует ровно одному символу.

table

Имя таблицы. Параметр принимает следующие шаблоны поиска: %, который соответствует нулю или более символам, и _, который соответствует ровно одному символу.

types

В параметр передают список значений типов через запятую, если в параметр table_type передаётся не пустая строка; каждое значение разрешается заключать в одинарные кавычки ' или передавать значения без кавычек. Например, 'TABLE','VIEW' или TABLE, VIEW. Функция odbc_tables() не вернёт никаких результатов для типа, если источник данных не поддерживает заданный тип таблицы.

Возвращаемые значения

Функция возвращает объект ODBC с результатом, который содержит информацию, или false, если возникла ошибка.

Набор результатов содержит следующие столбцы:

  • TABLE_CAT
  • TABLE_SCHEM
  • TABLE_NAME
  • TABLE_TYPE
  • REMARKS
Драйвер иногда сообщает о дополнительных столбцах.

Набор результатов упорядочивается по столбцам TABLE_TYPE, TABLE_CAT, TABLE_SCHEM и TABLE_NAME.

Список изменений

Версия Описание
8.4.0 Параметр odbc теперь ожидает экземпляр соединения Odbc\Connection; раньше ожидался аргумент с типом resource.
8.4.0 Функция теперь возвращает объект с результатом ODBC-запроса Odbc\Result; раньше возвращалось значение с типом resource.
8.0.0 Параметры schema, table и types теперь принимают значение null.

Примеры

Пример #1 Пример вывода списка таблиц в каталоге

<?php

$conn
= odbc_connect($dsn, $user, $pass);
$tables = odbc_tables($conn, 'SalesOrders', 'dbo', '%', 'TABLE');

while ((
$row = odbc_fetch_array($tables))) {
print_r($row);
break;
// Следующие строки опустили для краткости
}

?>

Вывод приведённого примера будет похож на:

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

Смотрите также

  • odbc_tableprivileges() - Перечисляет таблицы и привилегии, которые связаны с каждой таблицей
  • odbc_columns() - Перечисляет названия столбцов в таблицах
  • odbc_specialcolumns() - Извлекает особые столбцы
  • odbc_statistics() - Получает статистику о таблице
  • odbc_procedures() - Получает список процедур, которые хранятся в источнике данных

Добавить

Примечания пользователей 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