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.
mysql_num_fields
(PHP 4, PHP 5)
mysql_num_fields — Liefert die Anzahl der Felder in einem Ergebnis
Beschreibung
int mysql_num_fields
( resource
$result
)Liefert die Anzahl der Felder von einer Abfrage.
Parameter-Liste
-
Ergebnis -
Das Ergebnis Ressource, das ausgewertet wird. Dieses Ergebnis kommt von einem Aufruf von mysql_query().
Rückgabewerte
Gibt die Anzahl der Felder in dem Ergebnis resource bei Erfolg
zurückIm Fehlerfall wird FALSE zurückgegeben..
Beispiele
Beispiel #1 A mysql_num_fields() Beispiel
<?php
$result = mysql_query("SELECT id,email FROM people WHERE id = '42'");
if (!$result) {
echo 'Konnte Abfrage nicht ausführen: ' . mysql_error();
exit;
}
/* Gibt 2 zurück, da id,email === zwei Felder */
echo mysql_num_fields($result);
?>
Anmerkungen
Hinweis:
Für die Abwärtskompatibiliät kann der folgende veraltete Alias verwendet werden: mysql_numfields()
Siehe auch
- mysql_select_db() - Auswahl einer MySQL Datenbank
- mysql_query() - Sendet eine Anfrage an MySQL
- mysql_fetch_field() - Liefert ein Objekt mit Feldinformationen aus einem Anfrageergebnis
- mysql_num_rows() - Liefert die Anzahl der Zeilen im Ergebnis
php at jezusisheer dot nl
30-Mar-2007 01:10
tharkey at tharkey dot net
19-Jun-2003 01:26
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 (' / ');
}
apass AT passmoore DOT com
01-Oct-2002 05:52
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.
matt at iwdt dot net
23-Sep-2001 08:09
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
24-Dec-2000 03:56
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.
