zaLinux.ru

Как в MySQL / MariaDB вывести список столбцов. Как в PHP проверить наличие столбца в таблице


Рассмотрим ситуацию, когда нужно узнать, существует ли определённый столбец в таблице, которая находится в базе данных под управлением СУБД MySQL или MariaDB. В этой заметке мы рассмотрим синтаксис SQL-запросов для получения списка столбцов и поиска столбцов по имени. Также мы рассмотрим как проверить наличие столбца в таблице MySQL или MariaDB из PHP кода.

Как вывести все столбцы таблицы в MySQL / MariaDB

С помощью SQL-запроса можно получить список сразу всех столбцов в базе данных.

Следующий пример выберет для использования базу данных mydb и выведет все столбцы таблицы mytable:

USE mydb;
SHOW COLUMNS FROM mytable;

Запрос можно записать в одну строку, для этого дважды используется оператор «FROM» — вначале после него указывается таблица, а затем после ещё одного «FROM» указывается база данных, содержащая эту таблицу:

SHOW COLUMNS FROM mytable FROM mydb;

Вы можете использовать более наглядный синтаксис БАЗАДАННЫХ.ТАБЛИЦА:

SHOW COLUMNS FROM mydb.mytable;

Все 3 примера выведут одинаковый результат.

Примечание: в показанных выше и во всех последующих SQL-запросах вы можете заменить «FROM» на ключевое слово «IN» — результат будет идентичным. Например:

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

Примечание 2: вы также можете заменить «COLUMNS» на «FIELDS» и вновь получите идентичный результат. Например:

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

Как найти столбцы таблицы по шаблону имени

С помощью оператора «LIKE» в качестве строки поиска вы можете использовать шаблоны с подстановочными символами, например:


SHOW COLUMNS FROM mytable LIKE '%id'

Этот пример выведет все столбцы, название которых оканчивается на «id».

Если не использовать подстановочные символы, то оператор «LIKE» является эквивалентом «=».

Как найти столбцы по точному совпадению имени

Вы можете использовать на выбор один из следующих вариантов.

SQL-запрос с оператором «LIKE» без указания подстановочных символов:

SHOW COLUMNS FROM mytable LIKE 'id'

SQL-запрос с оператором «WHERE»:

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

Оба этих SQL-запроса дадут одинаковый результат.

Как искать по атрибутам таблицы в MySQL / MariaDB

С помощью «WHERE» также можно искать по атрибутам таблицы, например:


SHOW COLUMNS FROM table WHERE type LIKE 'varchar%'

Этот пример найдёт все столбцы с типом данных VARCHAR.

Подробности о поиске по атрибутам таблицы смотрите по ссылке: https://dev.mysql.com/doc/refman/9.0/en/show-columns.html

Как в PHP проверить, существует ли определённый столбец (поле) в таблице

Следующий код проверяет, существует ли столбец test_column в таблицы TestTABLE которая находится в базе данных 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; // Действия когда столбец существует
}

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *