PHP Conference Japan 2024

odbc_tables

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

odbc_tables取得儲存在特定資料來源中的表格名稱列表

說明

odbc_tables(
    Odbc\Connection $odbc,
    ?字串 $catalog = null,
    ?字串 $schema = null,
    ?字串 $table = null,
    ?字串 $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 實例;以前需要的是 資源
8.4.0 此函式現在返回 Odbc\Result 實例;以前返回的是 資源
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] =>
)

另請參閱

新增註解

使用者提供的註解 3 則註解

liquidicee at hotmail dot com
23 年前
以下是取得資料庫中所有表格清單的方法... 以及實際的範例說明如何完成以及如何取得結果... 而且您不需要輸入 schema 和所有其他廢話

<?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 顯然是一個已連線的資料庫。接著開始實驗

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

「udb」是 DNS - 也就是「我的 ODBC 資料庫在 Windows ODBC 設定中的名稱」。在 result_all 中顯示的是完整路徑,但我只使用了設定的名稱;兩種方法應該都可以。

第二個參數 "" 在 result_all 中列為 "TABLE_SCHEM",且所有項目都是 "NULL",所以我設定為 ""。

第三個參數是 "%"。根據 result_all,這一欄是 "TABLE_NAME",所以我原本可以設定成其中一個資料表的名稱,例如 "Address"。

我的情況是設定了一個 Access 資料庫,其中包含多個資料表。我在 ODBC 中建立了一個連結。執行上述的 all on everything 結果會顯示一組系統資料表,我目前不需要了解這些,所以我查看結果,然後使用字串 "TABLE" 建立新的資料表檢查,因為我感興趣的資料表在其 "TABLE_TYPE" 欄位下列為 "TABLE"。
To Top