PHP Conference Japan 2024

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

列出请求范围内所有表。

为了支持枚举限定符、所有者和表类型,catalogschematabletable_type 提供了以下特殊语义

  • 如果 catalog 是单个百分号字符 (%) 且 schematable 为空字符串,则结果集包含数据源的有效限定符列表。(除 TABLE_QUALIFIER 列之外的所有列都包含 NULL。)
  • 如果 schema 是单个百分号字符 (%) 且 catalogtable 为空字符串,则结果集包含数据源的有效所有者列表。(除 TABLE_OWNER 列之外的所有列都包含 NULL。)
  • 如果 table_type 是单个百分号字符 (%) 且 catalogschematable 为空字符串,则结果集包含数据源的有效表类型列表。(除 TABLE_TYPE 列之外的所有列都包含 NULL。)

参数

odbc

ODBC 连接对象,有关详细信息,请参阅 odbc_connect()

catalog

目录(在 ODBC 2 中称为“限定符”)。

schema

模式(在 ODBC 2 中称为“所有者”)。此参数接受以下搜索模式:% 匹配零个或多个字符,_ 匹配单个字符。

table

名称。此参数接受以下搜索模式:% 匹配零个或多个字符,_ 匹配单个字符。

types

如果 table_type 不是空字符串,则它必须包含感兴趣类型的逗号分隔值列表;每个值可以包含在单引号 (') 中或不包含。例如,'TABLE','VIEW'TABLE, VIEW。如果数据源不支持指定的表类型,则 odbc_tables() 不会返回该类型的任何结果。

返回值

返回包含信息的 ODBC 结果对象,或在失败时返回 false

结果集具有以下列

  • TABLE_CAT
  • TABLE_SCHEM
  • TABLE_NAME
  • TABLE_TYPE
  • REMARKS
驱动程序可以报告其他列。

结果集按 TABLE_TYPETABLE_CATTABLE_SCHEMTABLE_NAME 排序。

变更日志

版本 描述
8.4.0 odbc 现在期望一个 Odbc\Connection 实例;以前,期望一个 resource
8.4.0 此函数现在返回一个 Odbc\Result 实例;以前,返回一个 resource
8.0.0 schematabletypes 现在可以为 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] =>
)

参见

添加注释

用户贡献的注释 3 条注释

liquidicee at hotmail dot com
23 年前
以下是如何获取数据库中所有表的列表..以及如何完成操作和获取结果的实际示例..并且您无需输入模式以及其他所有内容

<?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>";
}
?>

要了解上述内容的作用,
使用 odbc_result_all($tablelist);这将显示 odbc_tables() 返回的所有内容,然后你可以查看它,并更好地了解 odbc_tables() 的工作原理以及它在字符串中返回的确切内容,以便更好地了解如何处理它。
如果我当时查看一下 odbc_tables() 返回的完整字符串,就会节省我很多时间,所以我建议你花一两分钟看看... 这是一个如何操作的示例..这对我有帮助;x。

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

希望这能帮助一些人..我还有很多关于这方面的内容要补充,但没有时间:(
所以再次希望这有帮助。
Liquidice
narcomweb at wanadoo dot fr
19 年前
这是一个列出表名的代码
<?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");

}
?>
您没有视图或系统表。
数据库中只有简单的表。
iggvopvantoodlwin
20 年前
关于结果无法正常工作的说明。
使用简单的测试数据库

odbc_result_all(odbc_tables($db));

$db 显然是一个已连接的 batadase。然后开始实验

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

"udb" 是 DNS - 也称为“我在 Windows ODBC 中的 ODBC 数据库名称”。在 result_all 中显示了完整路径,但我只使用了分配的名称;两者都应该可以工作。

第二个参数 "" 在 result_all 中列为 "TABLE_SCHEM",所有项目均为 "NULL",所以我使用了 ""。

第三个参数是 "%"。根据 result_all,此列为 "TABLE_NAME",所以我本可以使用其中一个表的名称,例如 "Address"。

在我的情况下,我有一个使用多个表的 Access 数据库设置。在 ODBC 中,我创建了一个链接。在所有内容上运行上述结果显示了一组系统表,此时我无需了解这些表,因此我查看结果,然后使用 "TABLE" 字符串构建我的新表检查,因为我感兴趣的表在它们的 "TABLE_TYPE" 列下被列为 "TABLE"。
To Top