Функция dbDelta в WordPress

В нескольких прошлых статьях мы уже рассматривали класс wpdb для работы с базой данных в WordPress - класс wpdb. Этот позволяет выполнять любые SQL запросы. В этой статье мы рассмотрим функцию dbDelta, которая позволяет создавать или изменять таблицы, поля и индексы, изменять структуру таблиц.

Функция dbDelta не определена по умолчанию. Чтобы использовать её, необходимо подключить файле этой функцией:
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
Функцию dbDelta лучше всего использовать для создания таблиц, полей, индексов и изменения существующей структуры полей. Не стоит использовать её для удаления полей и индексов, а так же для изменения структуры индексов.

Аргументы функции dbDelta

dbDelta( $queries, $execute );
Название Тип данных Описание
$queries строка/массив SQL запрос или массив из SQL запросов.
$execute логический Выполнять ли запрос или нет. По умолчанию: "true" - выполнять
При использовании функции необходимо помнить о жёстких требованиях к её использованию:
  • Каждое поле SQL запроса должно начинаться с новой строки. Но не должно быть пустых строк.
  • В SQL запросе тип поля нужно писать строчными буквами: varchar, int и т.п.
  • В SQL запросе нужно указывать длину поля, если у него может быть длина: varchar(15), int(12) и т.п.
  • Во время создания составных индексов нужно разделять название полей запятой без последующего пробела: KEY поле1 (поле1,поле2)

Создание таблицы с помощью dbDelta

Рассмотрим пример создания таблицы с помощью функции "dbDelta":
require_once ABSPATH . 'wp-admin/includes/upgrade.php';

$table = $wpdb->get_blog_prefix() . 'food';
$charset = "DEFAULT CHARACTER SET " . $wpdb->charset . " COLLATE " . $wpdb->collate;

$sql = "CREATE TABLE " . $table . " (
   id  int(10) unsigned NOT NULL auto_increment,
   name varchar(50) NOT NULL default '',
   description varchar(255) NOT NULL default '',
   PRIMARY KEY  (id)
)
" . $charset . ";";

dbDelta($sql);

Добавление колонки в таблицу с помощью dbDelta

Добавим колонку "taste" с типом "longtext" в таблицу, которую создали в предыдущем абзаце. Для этого мы используем запрос для создания таблицы. Функция "dbDelta" проверит не создана ли эта таблица. А таблица существует, поэтому функция изменит запрос так, чтобы произошло изменение, а не создание:
require_once ABSPATH . 'wp-admin/includes/upgrade.php';

$table = $wpdb->get_blog_prefix() . 'food';
$charset = "DEFAULT CHARACTER SET " . $wpdb->charset . " COLLATE " . $wpdb->collate;

$sql = "CREATE TABLE " . $table . " (
   id  int(10) unsigned NOT NULL auto_increment,
   name varchar(50) NOT NULL default '',
   description varchar(255) NOT NULL default '',
   taste longtext NOT NULL default '',
   PRIMARY KEY  (id)
)
" . $charset . ";";

dbDelta($sql);
При выполнении этого запроса будет изменена существующая таблица.
MouseDC.ru - хостинг, виртуальный хостинг, покупка доменов, проверка доменов, WHOIS, курсы создания сайтов, вебинары по созданию, курсы разработки сайтов, доработка сайтов, сопровождение сайтов, разработка сайтов, техподдержка сайтов
Cмотрите другие статьи:
Была ли статья полезной?
Была ли эта статья полезна? Есть вопрос?
хостинг для сайтов
Закажите недорогой хостинг Заказать

всего от 290 руб