PHP 8.4.0 RC3 available for testing

mysql_list_fields

(PHP 4, PHP 5)

mysql_list_fieldsListe les champs d'une table MySQL

Avertissement

Cette fonction était obsolète en PHP 5.4.0, et la totalité de l'extension original MySQL a été supprimée en PHP 7.0.0. À la place, vous pouvez utiliser soit l'extension MySQLi, soit l'extension PDO_MySQL. Voir aussi MySQL : choisir une API du guide. Alternatives à cette fonction :

  • Requête SQL : SHOW COLUMNS FROM sometable

Description

mysql_list_fields(string $database_name, string $table_name, resource $link_identifier = NULL): resource

Liste les champs de la table MySQL spécifiée.

La fonction mysql_list_fields() est obsolète. Il est préférable d'utiliser la fonction mysql_query() avec comme requête SHOW COLUMNS FROM table [LIKE 'name'] à la place.

Liste de paramètres

database_name

Le nom de la base de données qui va être interrogée.

table_name

Le nom de la table qui va être interrogée.

link_identifier

La connexion MySQL. S'il n'est pas spécifié, la dernière connexion ouverte avec la fonction mysql_connect() sera utilisée. Si une telle connexion n'est pas trouvée, la fonction tentera d'ouvrir une connexion, comme si la fonction mysql_connect() avait été appelée sans argument. Si aucune connexion n'est trouvée ou établie, une alerte de niveau E_WARNING sera générée.

Valeurs de retour

Une ressource de pointeurs de résultats en cas de succès, ou false si une erreur survint.

Le résultat retourné peut être utilisé avec les fonctions mysql_field_flags(), mysql_field_len(), mysql_field_name() et mysql_field_type().

Exemples

Exemple #1 Exemple d'alternative à mysql_list_fields()

<?php
$result
= mysql_query("SHOW COLUMNS FROM sometable");
if (!
$result) {
echo
'Impossible d\'exécuter la requête : ' . mysql_error();
exit;
}
if (
mysql_num_rows($result) > 0) {
while (
$row = mysql_fetch_assoc($result)) {
print_r($row);
}
}
?>

Résultat de l'exemple ci-dessus est similaire à :

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:

Pour des raisons de compatibilité ascendante, l'alias obsolète suivant peut être utilisé : mysql_listfields()

Voir aussi

add a note

User Contributed Notes 3 notes

up
7
mbevan at marginsoftware dot com
20 years ago
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;
}

?>
up
2
rhyous at yahoo dot com
19 years ago
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)

<?php
$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.

<?php
$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:

<?php
$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.
up
-3
phpflow at gmail dot com
12 years ago
Below script is used to get all coloumn indormation of an table.When we are working custome ORM then we need to match the coloumn name with array keys.

<?php
function getColoumn($table) {
$result = mysql_query("SHOW COLUMNS FROM ". $table);
if (!
$result) {
echo
'Could not run query: ' . mysql_error();
}
$fieldnames=array();
if (
mysql_num_rows($result) > 0) {
while (
$row = mysql_fetch_assoc($result)) {
$fieldnames[] = $row['Field'];
}
}

return
$fieldnames;
}
?>
To Top