downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mysql_field_seek> <mysql_field_len
Last updated: Fri, 13 Nov 2009

view this page in

mysql_field_name

(PHP 4, PHP 5)

mysql_field_name結果において指定したフィールド名を取得する

説明

string mysql_field_name ( resource $result , int $field_offset )

mysql_field_name()は、指定したフィールドの 名前を返します。

パラメータ

result

評価された結果 リソース。 この結果は、mysql_query() のコールにより得られたものです。

field_offset

数値フィールドオフセット。 field_offset0 から始まります。 field_offset が存在しない場合、 E_WARNING レベルのエラーが発行されます。

返り値

成功した場合に指定したフィールドの名前を、失敗した場合に FALSE を返します。

例1 mysql_field_name() の例

<?php
/* users テーブルには以下の 3 つのフィールドがある
*   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($res0) . "\n";
echo 
mysql_field_name($res2);
?>

上の例の出力は以下となります。

user_id
password

注意

注意: この関数により返されるフィー ルド名は 大文字小文字を区別 します。

注意: 下位互換のために、次の非推奨別名を使用してもいいでしょう。 mysql_fieldname()

参考



mysql_field_seek> <mysql_field_len
Last updated: Fri, 13 Nov 2009
 
add a note add a note User Contributed Notes
mysql_field_name
anonymous at site dot com
09-Mar-2008 02:13
This function is slightly stupid to be honest, why not just make an array of field names... You could consolidate the two of these functions that way and it makes it a lot easier to list them when your script is dynamic.

<?php

   
function mysql_field_array( $query ) {
   
       
$field = mysql_num_fields( $query );
   
        for (
$i = 0; $i < $field; $i++ ) {
       
           
$names[] = mysql_field_name( $query, $i );
       
        }
       
        return
$names;
   
    }
   
   
// Examples of use
   
   
$fields = mysql_field_array( $query );
   
   
// Show name of column 3
   
   
echo $fields[3];
   
   
// Show them all
   
   
echo implode( ', ', $fields[3] );
   
    
// Count them - easy equivelant to 'mysql_num_fields'
   
   
echo count( $fields );

?>
blackjackdevel at gmail dot com
14-Nov-2007 12:13
Strangely using an aproach like this:
$res=mysql_query("SELECT * FROM `orders`",$conec) or die (mysql_error());

$fields = mysql_num_fields($res);
$out="";
for ($i = 0; $i < $fields; $i++) {
    $fname=mysql_field_name($res, $i);

}

 Outputted the E_Warning:
Warning: mysql_field_name() [function.mysql-field-name]: Field N is invalid for MySQL result index

 With a lot of different number at N. But expliciting all fields instead of *. Didn't outputted the error.

 It maybe a caracteristic of this mysql database(it is from a open source application) because i never saw this in my own databases. Anyway hope this help if someone face the same strange situation
matteo.cisilino[no_more]cisilino[spm]com
09-Jan-2007 04:54
james, why make so difficult when it's very simple :\

$numberfields = mysql_num_fields($res_gb);

   for ($i=0; $i<$numberfields ; $i++ ) {
       $var = mysql_field_name($res_gb, $i);
       $row_title .= $var;
   }

echo $row_title;
janezr at jcn dot si
19-Oct-2005 02: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++) // Header
{ echo '<th>'.mysql_field_name($result, $i).'</th>'; }

echo
"</tr>\n";

while (
$row = mysql_fetch_row($result)) // Data
{ echo '<tr><td>'.implode($row,'</td><td>')."</td></tr>\n"; }

echo
"</table>\n"
?>
clinnenb at hotmail dot com
05-Aug-2005 03: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 02: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 12: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 02: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
21-Feb-2003 02: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);
?>
matt at iwdt dot net
24-Sep-2001 01: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

mysql_field_seek> <mysql_field_len
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites