请注意,如果您想获取表的列数,并且您使用的是“SHOW COLUMNS FROM $table”查询,则必须对结果使用mysql_num_rows()而不是mysql_num_fields()。考虑到这一点,这变得合乎逻辑,因为SHOW COLUMNS查询返回一个具有六列(Field、Type、Null、Key、Default和Extra)的结果,并且为找到的每一列只有一行。如果您计算字段数,您将始终得到6。如果您计算行数,您将获得找到的列数。
(PHP 4, PHP 5)
mysql_num_fields — 获取结果中的字段数
此扩展在PHP 5.5.0中已弃用,并在PHP 7.0.0中移除。应改用MySQLi或PDO_MySQL扩展。另请参见MySQL:选择API指南。此函数的替代方法包括
示例 #1 一个mysql_num_fields()示例
<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
echo '无法运行查询:' . mysql_error();
exit;
}
/* 返回 2,因为 id,email === 两个字段 */
echo mysql_num_fields($result);
?>
注意:
为了向后兼容性,可以使用以下已弃用的别名:mysql_numfields()
请注意,如果您想获取表的列数,并且您使用的是“SHOW COLUMNS FROM $table”查询,则必须对结果使用mysql_num_rows()而不是mysql_num_fields()。考虑到这一点,这变得合乎逻辑,因为SHOW COLUMNS查询返回一个具有六列(Field、Type、Null、Key、Default和Extra)的结果,并且为找到的每一列只有一行。如果您计算字段数,您将始终得到6。如果您计算行数,您将获得找到的列数。
这是一个从表中打印<th>标签行的方法
注意:我没有测试过这个
$result = mysql_query("select * from table");
for ($i = 0; $i < mysql_num_fields($result); $i++) {
print "<th>".mysql_field_name($result, $i)."</th>\n";
}
如果有错误,请发表评论
如果您只需要表的字段数,您可以这样做
<?php
$db_id = mysql_connet();
$result = mysql_query("DESCRIBE [tableName], $db_id);
$numFields = mysql_num_rows($result);
?>
因为 "DESCRIBE" 为表中的每个字段返回一行(至少在MySQL中),所以这将有效。