Recherche de site Web

Comment lister les colonnes dans MySQL/MariaDB. Comment vérifier si une colonne existe dans une table en PHP


Considérons une situation dans laquelle vous devez savoir si une certaine colonne existe dans une table située dans une base de données gérée par un SGBD MySQL ou MariaDB. Dans cet article, nous examinerons la syntaxe des requêtes SQL permettant d'obtenir une liste de colonnes et de rechercher des colonnes par nom. Nous verrons également comment vérifier la présence d'une colonne dans une table MySQL ou MariaDB à partir du code PHP.

Comment lister toutes les colonnes d'une table dans MySQL/MariaDB

À l'aide d'une requête SQL, vous pouvez obtenir une liste de toutes les colonnes de la base de données à la fois.

L'exemple suivant sélectionnera la base de données mydb à utiliser et affichera toutes les colonnes de la table mytable :


USE mydb;
SHOW COLUMNS FROM mytable;

La requête peut être écrite sur une seule ligne ; pour cela, l'opérateur « FROM » est utilisé deux fois – d'abord, la table est indiquée après lui, puis après un autre « FROM » la base de données contenant cette table est indiquée :


SHOW COLUMNS FROM mytable FROM mydb;

Vous pouvez utiliser la syntaxe DATABASE.TABLE plus descriptive :


SHOW COLUMNS FROM mydb.mytable;

Les 3 exemples produiront le même résultat.

Remarque : dans les requêtes SQL présentées ci-dessus et dans toutes les requêtes SQL ultérieures, vous pouvez remplacer « FROM » par le mot-clé « IN » – le le résultat sera identique. Par exemple:


SHOW COLUMNS IN mytable FROM mydb;
SHOW COLUMNS IN mydb.mytable;

Remarque 2 : Vous pouvez également remplacer « COLUMNS » par « FIELDS » et obtenir à nouveau le même résultat. Par exemple:


SHOW FIELDS FROM mytable FROM mydb;
SHOW FIELDS FROM mydb.mytable;

Comment trouver des colonnes de tableau par modèle de nom

En utilisant l'opérateur « LIKE » comme chaîne de recherche, vous pouvez utiliser des modèles génériques, par exemple :


SHOW COLUMNS FROM mytable LIKE '%id'

Cet exemple listera toutes les colonnes dont le nom se termine par « id ».

Si vous n'utilisez pas de caractères génériques, l'opérateur « LIKE » est l'équivalent de « = ».

Comment trouver des colonnes par correspondance exacte du nom

Vous pouvez choisir parmi l'une des options suivantes.

Requête SQL avec l'opérateur « LIKE » sans spécifier de caractères génériques :


SHOW COLUMNS FROM mytable LIKE 'id'

Requête SQL avec l'opérateur « WHERE » :


SHOW COLUMNS FROM mytable WHERE field = 'column name';

Ces deux requêtes SQL donneront le même résultat.

Comment rechercher par attributs de table dans MySQL/MariaDB

En utilisant "WHERE", vous pouvez également effectuer une recherche par attributs de table, par exemple :


SHOW COLUMNS FROM table WHERE type LIKE 'varchar%'

Cet exemple trouvera toutes les colonnes avec un type de données VARCHAR.

Pour plus de détails sur la recherche par attributs de table, consultez le lien : https://dev.mysql.com/doc/refman/9.0/en/show-columns.html

Comment vérifier si une certaine colonne (champ) existe dans une table en PHP

Le code suivant vérifie si la colonne test_column existe dans la table TestTABLE qui se trouve dans la base de données TestDB :


$db_user = 'root';
$db_password = '';
$db_name = 'TestDB';
$mysqli = new mysqli("localhost", $db_user, $db_password, $db_name);
if ($mysqli->connect_errno) 
{
    printf("Не удалось подключиться: %s\n", $mysqli->connect_error);
    exit();
}

$query = "SHOW COLUMNS FROM TestTABLE WHERE field = 'test_column';";
$result = $mysqli->query($query);
if (mysqli_num_rows($result)==0) 
{ 
    echo 'The column does not exist' . PHP_EOL;
}
else
{
    echo 'The column exists' . PHP_EOL;
}