search for in the  
<mysql_field_lenmysql_field_seek>
Last updated: Thu, 19 May 2005

mysql_field_name

(PHP 3, PHP 4, PHP 5)

mysql_field_name -- Get the name of the specified field in a result

Description

string mysql_field_name ( resource result, int field_offset )

mysql_field_name() returns the name of the specified field index.

Parameters

result

The result resource that is being evaluated. This result comes from a call to mysql_query().

field_offset

The numerical field offset. The field_offset starts at 0. If field_offset does not exist, an error of level E_WARNING is also issued.

Return Values

The name of the specified field index on success, or FALSE on failure.

Examples

Example 1. mysql_field_name() example

<?php
/* The users table consists of three fields:
*  user_id
*  username
*  password.
*/
$link = @mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!
$link) {
   die(
'Could not connect to MySQL server: ' . mysql_error());
}
$dbname = 'mydb';
$db_selected = mysql_select_db($dbname, $link);
if (!
$db_selected) {
   die(
'Could not set $dbname: ' . mysql_error());
}
$res = mysql_query('select * from users', $link);

echo
mysql_field_name($res, 0) . "\n";
echo
mysql_field_name($res, 2);
?>

The above example will output:

user_id
password

Notes

Note: Field names returned by this function are case-sensitive.

Note: For downward compatibility, the following deprecated alias may be used: mysql_fieldname()



User Contributed Notes
mysql_field_name
jimharris at blueyonder dot co dot uk
20-Dec-2004 08:28
The code in the last comment has an obvious mistake in the for loop expression.  The correct expression in the for-loop is $x<$y rather than $x<=$y...

$result = mysql_query($sql,$conn) or die(mysql_error());
$rowcount=mysql_num_rows($result);
$y=mysql_num_fields($result);
for ($x=0; $x<$y; $x++) {
   echo = mysql_field_name($result, $x).'<br>';
}
colin dot truran at shiftf7 dot com
17-Dec-2004 06:44
T simply itterate through all the field names on a result set try using this.

$result = mysql_query($sql,$conn) or die(mysql_error());
$rowcount=mysql_num_rows($result);
$y=mysql_num_fields($result);
for ($x=0; $x<=$y; $x++) {
   echo = mysql_field_name($result, $x).'<br>';
}

This is useful if you have a result set that joins several tables dynamicaly and you are never sure what all the fields will be when you come to display them.

I suggest you place this within a loop through your result rows and include a field flag check  around the echo to only show certain data types like this.

$y=mysql_num_fields($result);
while ($row=mysql_fetch_array($result)) {
  for ($x=0; $x<=$y; $x++) {
   $fieldname=mysql_field_name($result,$x);
   $fieldtype=mysql_field_type($result, $x);
   if ($fieldtype=='string' && $row[$fieldname]!='')   
       echo $row[$fieldname].' , ';
   }
   echo '<br>';
}
aaronp123 att yahoo dott comm
21-Feb-2003 08:27
You could probably elaborate on this by sending a full sql query to this function...but I titled it simple_query() because it doesn't really allow for joins.  Never the less, if you want to get a quick array full of a single row result set this is painless:

function simple_query($table_name, $key_col, $key_val) {
   // open the db
   $db_link = my_sql_link();
   // query table using key col/val
   $db_rs = mysql_query("SELECT * FROM $table_name WHERE $key_col = $key_val", $db_link);
   $num_fields = mysql_num_fields($db_rs);
   if ($num_fields) {
       // first (and only) row
       $row = mysql_fetch_assoc($db_rs);
       // load up array
       for ($i = 0; $i < $num_fields; $i++) {
           $simple_q[mysql_field_name($db_rs, $i)] = $row[mysql_field_name($db_rs, $i)];
       }
       // and return
       return $simple_q;
   } else {
       // no rows
       return false;
   }
   mysql_free_result($db_rs);
}

**Please note that my_sql_link() is just a function I have to open up a my sql connection.**
jason dot chambes at phishie dot net
20-Feb-2003 08:07
<?
/*
   By simply calling the searchtable() function
   with these variables it will serach the desired
   database and procude a table for each field that
   there is a match.
*/

function searchtable($host,$user,$pass,$database,$tablename,$userquery)
{
  
$link  = mysql_connect($host, $user, $pass) or die("Could not connect: " . mysql_error());
  
$db    = mysql_select_db($database, $link) or die(mysql_error());
  
$fields = mysql_list_fields($database, $tablename, $link);
  
$cols  = mysql_num_fields($fields);

   for (
$i = 1; $i < $cols; $i++) {
      
$allfields[] = mysql_field_name($fields, $i);
   }
   foreach (
$allfields as $myfield) {
      
$result = mysql_query("SELECT * FROM $tablename WHERE $myfield like '%$userquery%' ");
       if (
mysql_num_rows($result) > 0){
           echo
"<h3>search <i>$database</i> for <i>$userquery</i>, found match(es) in <i>$myfield</i>: </h3>\n";
           echo
"<table border=1 align=\"center\">\n\t<tr>\n";
           for (
$i = 1; $i < $cols; $i++) {
               echo
"\t\t<th";
               if (
$myfield == mysql_field_name($fields, $i)){
                   echo
" bgcolor=\"orange\"> ";
               } else {
                   echo
">";
               }
               echo
mysql_field_name($fields, $i) . "</th>\n";
           }
           echo
"\t</tr>\n";
          
$myrow = mysql_fetch_array($result);
           do {
               echo
"\t<tr>\n";
               for (
$i = 1; $i < $cols; $i++){
                   echo
"\t\t<td> $myrow[$i] &nbsp;</td>\n";
               }
               echo
"\t</tr>\n";
           } while (
$myrow = mysql_fetch_array($result));
           echo
"</table>\n";
       }
   }
}

searchtable($host,$user,$pass,$database,$tablename,$userquery);
?>
zan at stargeek dot com
14-Jan-2003 11:45
a simple example of how to use mysql_field_name to create column headings for a dynamically generated excel file from a mysql db. http://www.stargeek.com/scripts.php?script=2&cat=sql
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
wade at staffordware dot com
04-Nov-1999 06:06
If a field returned by the result contains NULL then that field name will not be returned (WIN32).

<mysql_field_lenmysql_field_seek>
 Last updated: Thu, 19 May 2005
Copyright © 2001-2005 The PHP Group
All rights reserved.
This unofficial mirror is operated at: The Server Pages
Last updated: Thu May 19 17:35:34 2005 CDT