Forum PHP 2017


(PHP 4, PHP 5)

mysql_num_fieldsObtiene el número de campos de un resultado


Esta extensión fue declarada obsoleta en PHP 5.5.0 y eliminada en PHP 7.0.0. En su lugar debería utilzarse las extensiones MySQLi o PDO_MySQL. Véase también la guía MySQL: elegir una API y sus P+F relacionadas para más información. Alternatives to this function include:


int mysql_num_fields ( resource $result )

Obtiene el número de campos de una consulta.



El resultado resource que está siendo evaluado. Este resultado proviene de una llamada a mysql_query().

Valores devueltos

Devuelve el número de campos del resource de conjunto de resultados en caso de éxito o FALSE en caso de error.


Ejemplo #1 Un ejemplo de mysql_num_fields()

mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!
$resultado) {
'No se pudo ejecutar la consulta: ' mysql_error();

/* devuelve 2 ya que id,email === dos campos */
echo mysql_num_fields($resultado);



Por razones de compatibilidad con versiones anteriores, los siguientes alias obsoletos podrían usarse: mysql_numfields()

Ver también

add a note add a note

User Contributed Notes 5 notes

php at jezusisheer dot nl
10 years ago
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.
tharkey at tharkey dot net
14 years ago
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 (' / ');
matt at iwdt dot net
15 years ago
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
bwark at stanford dot edu
16 years ago
If you just want the number of fields in a table, you can do something like this:

= 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.
apass AT passmoore DOT com
14 years ago
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!");

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.
To Top