Note, using mysql_list_fields will change the currently selected database so subsequent mysql_query operations will be on the database in param 1 not the one selected with mysql_select_db
mysql_list_fields
(PHP 4, PHP 5, PECL mysql:1.0)
mysql_list_fields — List MySQL table fields
Description
resource mysql_list_fields ( string $database_name, string $table_name [, resource $link_identifier] )Retrieves information about the given table name.
This function is deprecated. It is preferable to use mysql_query() to issue a SQL SHOW COLUMNS FROM table [LIKE 'name'] statement instead.
Parameters
- database_name
The name of the database that's being queried.
- table_name
The name of the table that's being queried.
- link_identifier
The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() is assumed. If no such link is found, it will try to create one as if mysql_connect() was called with no arguments. If by chance no connection is found or established, an E_WARNING level warning is generated.
Return Values
A result pointer resource on success, or FALSE on failure.
The returned result can be used with mysql_field_flags(), mysql_field_len(), mysql_field_name() and mysql_field_type().
Examples
Example 1406. Alternate to deprecated mysql_list_fields()
<?php
$result = mysql_query("SHOW COLUMNS FROM sometable");
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
print_r($row);
}
}
?>
The above example will output something similar to:
Array
(
[Field] => id
[Type] => int(7)
[Null] =>
[Key] => PRI
[Default] =>
[Extra] => auto_increment
)
Array
(
[Field] => email
[Type] => varchar(100)
[Null] =>
[Key] =>
[Default] =>
[Extra] =>
)
Notes
Note: For downward compatibility, the following deprecated alias may be used: mysql_listfields()
See Also
| mysql_field_flags() |
| mysql_info() |
mysql_list_fields
12-Sep-2006 01:33
15-Oct-2005 07:05
# This should also give you an array of column names
$res = mysql_query("SHOW COLUMNS FROM `my_table`");
while ($row = mysql_fetch_array($res)) $col_names[]=$row[0];
26-Jul-2005 04:27
Here is a simple script get names of columns in an array:
//Get names of columns in table
$field_names = array();
$res = mysql_query("SHOW COLUMNS FROM `my_table`");
for($i=0;$i<mysql_num_rows($res);$i++){
array_push($field_names,mysql_result($res, $i));
}
04-Jun-2005 10:22
To make an array containing the names of a column from a table, you use the following simple script: (Note: using table1 with three columns)
$qColumnNames = mysql_query("SHOW COLUMNS FROM table1",$db) or die("mysql error");
$numColumns = mysql_num_rows($qColumnNames);
$x = 0;
while ($x < $numColumns)
{
$colname = mysql_fetch_row($qColumnNames);
$col[$colname[0]] = $colname[0];
$x++;
}
print_r($col);
/* it will have the following output
Array (
[firstcolumn] => firstcolumn
[secondcolumn] => secondcolumn
[thirdcolumn] => thirdcolumn
)
*/
Or you can number the columns from zero. This help when using it in conjunction with mysql_fetch_row to get an array. You don't have to remember which number of the array a certain column is.
$qColumnNames = mysql_query("SHOW COLUMNS FROM table1",$db) or die("mysql error");
$numColumns = mysql_num_rows($qColumnNames);
$x = 0;
while ($x < $numColumns)
{
$colname = mysql_fetch_row($qColumnNames);
$col[$colname[0]] = $x;
$x++;
}
print_r($col);
/* it will have the following output
Array (
[firstcolumn] => 0
[secondcolumn] => 1
[thirdcolumn] => 2
)
*/
To use it in conjuction with mysql_fetch_row:
$row = mysql_fetch_row("SELECT * from table1",$db) or die("mysql error");
You can now call $row[col[firstcolumn]]. This becomes useful when you have a lot of columns.
13-Nov-2003 09:40
If you're willing to use a lot of functions to get a little information about fields in a table, this function is for you. If you just want to get all the information you can find, you can use this:
<?php
// Taken from: http://ca.php.net/manual/en/function.mysql-field-flags.php
// Original by: amir at scrounch dot com
// Returns the name of the fields in the primary key for a table.
// Also keeps the fields in KEY order. Handy.
function getPrimaryKeyOf($table) {
$keys = Array();
$query = sprintf("SHOW KEYS FROM `%s`", $table);
$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($result)) {
if ( $row['Key_name'] == 'PRIMARY' )
$keys[$row['Seq_in_index'] - 1] = $row['Column_name'];
}
return $keys;
}
// Returns a bunch of information about a table...
// The name of the auto-increment field, if any, fields in the
// primary key (using the function above), and all information
// about all fields.
function getTableInformationOf($table) {
$information = array(
"auto" => "",
"primary" => array(),
"fields" => array()
);
$information['primary'] = $this->getPrimaryKeyOf($table);
$result = mysql_query("DESC `$table`");
while ( $field = mysql_fetch_assoc($result) ) {
$information['fields'][] = $field;
if ( $field['Extra'] == "auto_increment" )
$information['auto'] = $field['Field'];
}
return $information;
}
?>
19-Jul-2002 02:55
mysql_list_fields() retrieves information about the given table name but you can use something like mysql_fetch_field to retrieve the field names from a result source.
