odbc_tables

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

odbc_tables获取特定数据源中存储的表名列表

描述

odbc_tables(
    资源 $odbc,
    ?字符串 $catalog = null,
    ?字符串 $schema = null,
    ?字符串 $table = null,
    ?字符串 $types = null
): 资源|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.0.0 schematabletypes 现在可以为空。

范例

范例 #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] =>
)

参见

添加注释

用户贡献的注释 4 则

up
2
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
up
0
narcomweb at wanadoo dot fr
18 年前
这是一个列出表名的代码
<?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");

}
?>
您没有使用视图或系统表。
只有数据库中的简单表。
up
0
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 中,我创建了一个链接。在所有内容上运行上面的 all 结果显示了一组系统表,我目前不需要了解这些系统表,因此我查看结果,然后使用“TABLE”字符串构建我的新表检查,因为我对的表被列为“TABLE”在它们的“TABLE_TYPE”列下。
up
-7
pmains at ux dot com
19 年前
这可能适用于各种格式,但如果您想要从 SQL dsn 源(我使用的是 MSSQL)中获取 *仅* 表名称的列表,以下代码可行。

<?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