[MS SQL Server 2005/2008,PHP 5]
假设您需要访问特定表的列名,例如,为了显示缺少信息的字段的表头。在浏览文档时,我不太清楚如何在不使用odbc_result_all()(它将所有内容输出到单个HTML表格中)的情况下使用odbc_columns()。
这里介绍一种将所有输出存储到数组中,然后仅访问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。
希望这有帮助……
干杯
Thomas