请注意,如果您想获取表的列数,并且您使用的是“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";
}
如果有错误,请发布评论
您可以在没有请求的情况下使用它,只是为了列出字段
$liste_champs = mysql_list_fields ( $Base, $Table, $connexion);
for ($i=0; $i < mysql_num_fields ($l_champs); $i++) {
echo ( mysql_field_name ($l_champs, $i) );
echo (' / ');
}
如果您只是想要表中的字段数,您可以执行以下操作
<?php
$db_id = mysql_connet();
$result = mysql_query("DESCRIBE [tableName], $db_id);
$numFields = mysql_num_rows($result);
?>
因为 "DESCRIBE" 为表中的每个字段返回一行(至少在 MySQL 中),这将起作用。
添加到最后一条评论:您可以动态地循环遍历任意数量的列和行,如下所示
$query="您的 SQL";
$result=mysql_query($query) or die("Query ($query) sucks!");
$fields=mysql_num_fields($result);
echo "<table>\n<tr>";
for ($i=0; $i < mysql_num_fields($result); $i++) // 表头
{ print "<th>".mysql_field_name($result, $i)."</th>"; }
echo "</tr>\n";
while ($row = mysql_fetch_row($result)) { // 表体
echo "<tr>";
for ($f=0; $f < $fields; $f++) {
echo "<td>$row[$f]</td>"; }
echo "</tr>\n";}
echo "</table><p>";
已测试。