|  |  | 
    | mysql_field_name    (PHP 3, PHP 4, PHP 5) mysql_field_name -- 
     Возвращает название указанной колонки результата запроса.
    Описаниеstring mysql_field_name  ( resource result, int field_index ) 
     mysql_field_name() возвращает название колонки с
     указанным индексом. Параметр result должен быть указателем
     на результат запроса, а field_index -- индексом
     колонки в запросе.
     Замечание: 
      field_index начинается с 0.
      
      К примеру, индекс третьей колонки будет 2, а индекс четвёртой -- 3.
     
Замечание: Имена полей, возвращаемые этой
функцией, регистро-зависимы.
      | Пример 1. Пример использования mysql_field_name() | 
<?php$link = mysql_connect('localhost', "mysql_user", "mysql_password");
 $dbname = "mydb";
 mysql_select_db($dbname, $link)
 or 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);
 ?>
 | 
 
       Вышеописанный пример выдаст следующий результат:
       | 
 
     Для совместимости, как алиас, доступна устаревшая функция 
     mysql_fieldname(). Однако, использовать её крайне не
     рекомендуется.
    
 
 
 
  mysql_field_name
  
  janezr at jcn dot si
  19-Oct-2005 07:18
  
This is another variant of displaying all columns of a query result, but with a simplified while loop.
 <?
 $query="select * from user";
 $result=mysql_query($query);
 $numfields = mysql_num_fields($result);
 
 echo "<table>\n<tr>";
 
 for ($i=0; $i < $numfields; $i++) { echo '<th>'.mysql_field_name($result, $i).'</th>'; }
 
 echo "</tr>\n";
 
 while ($row = mysql_fetch_row($result)) { echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n"; }
 
 echo "</table>\n"
 ?>
 
  clinnenb at hotmail dot com
  05-Aug-2005 08:19
  
The following will create a PHP array, $array, containing the MySQL query results with array indexes of the same name as field names returned by the MySQL query.
 while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
 $i=0;
 foreach ($line as $col_value) {
 $field=mysql_field_name($result,$i);
 $array[$field] = $col_value;
 $i++;
 }
 }
 
  jimharris at blueyonder dot co dot uk
  20-Dec-2004 06: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 04: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 06: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 06:07
  
<?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]  </td>\n";
 }
 echo "\t</tr>\n";
 } while ($myrow = mysql_fetch_array($result));
 echo "</table>\n";
 }
 }
 }
 
 searchtable($host,$user,$pass,$database,$tablename,$userquery);
 ?>
 
  matt at iwdt dot net
  23-Sep-2001 06: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 04:06
  
If a field returned by the result contains NULL then that field name will not be returned (WIN32).
 
 |  |