[MS SQL Server 2005/2008, PHP 5]
假设您需要访问特定表的列名,例如将其显示为表头,以显示缺少信息的字段。在浏览文档时,我有点迷茫,不知道如何在不使用 odbc_result_all() 的情况下使用 odbc_columns(),因为 odbc_result_all() 将所有内容输出到一个 HTML 表格中。
以下是一种将所有输出放入数组,然后仅访问 odbc_columns() 输出的一个或多个字段的方法
<?php
include('connect.inc'); // <== 将所有数据库连接参数放在此处。(DSN、PWD、USR、mssql_connect 等;返回 $connection)
$outval = odbc_columns($connection, "您的数据库名称", "%", "您的表名", "%");
$pages = array();
while (odbc_fetch_into($outval, $pages)) {
echo $pages[3] . "<br />\n"; // 将数组 $pages 的所有字段输出到新行,直到数组指针到达数组数据的末尾
}
?>
现在,您的数组 $pages 将包含以下内容
([x] 是为了更好地理解而在此处显示的数组索引)
[0] TABLE_CAT <== 您的数据库名称
[1] TABLE_SCHEM <== dbo,您的表模式
[2] TABLE_NAME <== 您的表名
[3] COLUMN_NAME <== 您的列名(在 odbc_columns() 中使用 "%" 选择所有列)
[4] DATA_TYPE <== -8
[5] TYPE_NAME <== nchar(对应于 -8,例如 11 是 datetime,依此类推)
[6] COLUMN_SIZE <== 数字值
[7] BUFFER_LENGTH <== 数字值
[8] DECIMAL_DIGITS <== 数字值或 NULL
[9] NUM_PREC_RADIX <== 数字值或 NULL
[10] NULLABLE <== 数字值
[11] REMARKS <== 数字值或 NULL
[12] COLUMN_DEF <== 数字值或 NULL
[13] SQL_DATA_TYPE <== 数字值
[14] SQL_DATETIME_SUB <== 数字值或 NULL
[15] CHAR_OCTET_LENGTH <== 数字值或 NULL
[16] ORDINAL_POSITION <== 数字值
[17] IS_NULLABLE <== YES/NO
[18] SS_DATA_TYPE <== 数字值
现在,您可以通过其键递归访问每个字段,并输出仅需要的字段,而不是输出 odbc_result_all() 的所有内容。
请注意,数组键从零 (0) 开始,而不是从一 (1) 开始,因此 echo $pages[3] 选择上述列表中的 COLUMN_NAME。
希望这有帮助...
干杯
托马斯