|
mysql_num_fields
Get number of fields in result
(PHP 4, PHP 5, PECL mysql:1.0)
Example 1452. A mysql_num_fields() example<?php Related Examples ( Source code ) » mysql_num_fields Examples ( Source code ) » List Database, Table, and Field Examples ( Source code ) » Get column name, type and max length Examples ( Source code ) » Total number of fields in a table Code Examples / Notes » mysql_num_fieldstharkey
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 (' / '); } php
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.
bwark
If you just want the number of fields in a table, you can do something like this: -- $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. matt
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 dubious
Examples? How about this for a highly contrived but hopefully understandable example: ------------------------ <?php function DoAQuery($Query) { $Result=mysql_db_query($Query); $NumberOfFields=mysql_num_fields($Result); print("There are $NumberOfFields Columns in the result "); } $ConnectionResource=mysql_connect("localhost","User","Password"); $Query="SELECT This, That, TheOther from Some_Table ORDER BY This"; DoAQuery($Query); ?> ------------------------- Presuming I did that right, the entire output of this snippet should be "There are 3 Columns in the result" (assuming you actually have a mysql database with those fields, etc.) Presumably, in the Real World, you'd be using mysql_num_fields for formatting and such. Hey, I SAID it was highly contrived, didn't I? apass
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> "; This has been tested. |
Change Languagemysql_affected_rows mysql_change_user mysql_client_encoding mysql_close mysql_connect mysql_create_db mysql_data_seek mysql_db_name mysql_db_query mysql_drop_db mysql_errno mysql_error mysql_escape_string mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_lengths mysql_fetch_object mysql_fetch_row mysql_field_flags mysql_field_len mysql_field_name mysql_field_seek mysql_field_table mysql_field_type mysql_free_result mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql_insert_id mysql_list_dbs mysql_list_fields mysql_list_processes mysql_list_tables mysql_num_fields mysql_num_rows mysql_pconnect mysql_ping mysql_query mysql_real_escape_string mysql_result mysql_select_db mysql_set_charset mysql_stat mysql_tablename mysql_thread_id mysql_unbuffered_query |