SQL : Comment afficher les tables d'une base

La commande SQL DESCRIBE place dans un tableau les colonnes d'une table ainsi que le format et autres paramètre de la colonne. Elle s'utilise conjointement avec SHOW TABLES qui retourne la liste des tables.

On peut avec un algorithme ainsi afficher toutes les colonnes et voir la structure de de la base de donnée, vérifier le format des champ.

Le fichier de configuration pris pour exemple est celui de Wordpress:

<?php
define('DB_NAME', 'theme');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
$table_prefix = 'WP_'; ?>

On y inclut la connection à la base de données:

$base = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD)
or die("MySQL database '".DB_NAME."' not accessible.<br>\n"); mysqli_select_db($base, DB_NAME)
or die("Enable to select ".DB_NAME." database<br>\n");

Commande SHOW TABLE

On récupère d'abord la liste des tables:

$results = mysqli_query($base, "SHOW TABLES");
if($results == false) die("Empty database"); $tables = array();
while($arr = mysqli_fetch_array($results))
{
array_push($tables, $arr['0']);
}

On empile les noms des table dans le tableau $tables.

Commande DESCRIBE

Pour chaque table, on peut alors récupérer le nom des colonnes:

foreach($tables as $table)
{
$results = mysqli_query($base, "DESCRIBE $table"); echo "TABLE $table <br>"; while($arr = mysqli_fetch_array($results))
{
echo "Nom ", $arr['0'], "<br>";
echo "Type ", $arr['1'], "<br>";
echo "Peut être null ", $arr['2'], "<br>";
echo "Clé ", $arr['3'], "<br>"; } }

"PRI" est un raccourci pour PRIMARY KEY.

Pour une présentation plus lisible, on utilisera un tableau dans le fichier complet.

Voir le code complet