• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • mysql_num_fields()

    (PHP 4, PHP 5)

    取得结果集中字段的数目

    说明

    mysql_num_fields(resource $result): int

    mysql_num_fields()返回结果集中字段的数目。

    参见mysql_select_db(),mysql_query(),mysql_fetch_field()和mysql_num_rows()。

    为向下兼容仍然可以使用mysql_numfields(),但反对这样做。

    Note that, if you want to get the amount of columns of a table and you're using the "SHOW COLUMNS FROM $table" query, you will have to use mysql_num_rows() instead of mysql_num_fields() on the result. This becomes logical when thinking about it, because the SHOW COLUMNS query returns a result with six columns (Field, Type, Null, Key, Default and Extra) and with a single row for every column found. If you'd count the number of fields, you'd always get 6. If you count the number of rows, you'll get the amount of columns found.
    here's one way to print out a row of <th> tags from a table
    NOTE: i didn't test this
    $result = mysql_query("select * from table");
    for ($i = 0; $i < mysql_num_fields($result); $i++) {
      print "<th>".mysql_field_name($result, $i)."</th>\n";
    }
    post a comment if there's an error
    You can use it without a requete, just to list the fields :
    $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 (' / ');
                }
    If you just want the number of fields in a table, you can do something like this:
    <?php
    $db_id = mysql_connet();
    $result = mysql_query("DESCRIBE [tableName], $db_id);
    $numFields = mysql_num_rows($result);
    ?>
    Because "DESCRIBE" returns one row for each field in the table (at least in MySQL), this will work.
    Adding to the last comment: you can dynamically loop through any number of columns AND rows like so-
    $query="your 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++) //Table Header
    { print "<th>".mysql_field_name($result, $i)."</th>"; }
    echo "</tr>\n";
    while ($row = mysql_fetch_row($result)) { //Table body
    echo "<tr>";
      for ($f=0; $f < $fields; $f++) {
      echo "<td>$row[$f]</td>"; }
    echo "</tr>\n";}
    echo "</table><p>";
    This has been tested.