PHP: mysql_field_name - Manual

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

search for in the

mysql_field_seek mysql_field_len

Last updated: Sat, 27 Jan 2007

view this page in

# 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
/* Таблица пользователей состоит из трёх колонок:
* user_id
* username
* password.
*/
$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);
?>`

Вышеописанный пример выдаст следующий результат:

    user_id
    password

Для совместимости, как алиас, доступна устаревшая функция mysql_fieldname(). Однако, использовать её крайне не рекомендуется.

add a note User Contributed Notes
mysql_field_name
matteo.cisilino[no_more]cisilino[spm]com
09-Jan-2007 08: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 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++) // 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 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
`<?
/*
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
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`
add a note
mysql_field_seek mysql_field_len

Last updated: Sat, 27 Jan 2007
show source | credits | stats | sitemap | contact | advertising | mirror sites
Copyright © 2001-2007 The PHP Group
All rights reserved.
This mirror generously provided by: Yahoo! Inc.
Last updated: Sat Mar 10 10:36:09 2007 PST