Интеграция базы данных в WordPress
Помню, когда я только начинал использовать WordPress, я подключался к базе данных напрямую, то есть коннектился через mysql_connect() и всё такое, ну и нубство :)
Итак, приступим.
Перед тем, как использовать любой из перечисленных ниже методов, необходимо глобализовать $wpdb.
Произвольный SQL-запрос
Проще простого, ведь так? А теперь Пример 1:
Пример 2.
используйте $wpdb->prepare, чтобы защититься от SQL-инъекций:
Пример 3.
также в качестве второго параметра можно использовать и массив:
Обращение к таблицам MySQL, префикс таблиц
Обратиться к стандартным таблицам в базе WordPress очень легко — ведь для этого предназначены переменные класса:
- $commentmeta
- $comments
- $links
- $options
- $postmeta
- $posts
- $terms
- $term_relationships
- $term_taxonomy
- $usermeta
- $users
Как это будет выглядеть на деле:
Ок, а как быть с таблицами плагинов, или теми, которые сами мы и создали?
Как использовать SELECT?
На этот случай в WordPress существует аж четыре метода (функции). По-прежнему не хочу загружать вас лишней болтовней, поэтому сразу перехожу к делу.
1. get_results
Первый метод больше всего похож на обычный запрос SELECT.
- output_type — тип вывода данных
- OBJECT — объект (по умолчанию),
- OBJECT_K — ассоциативный массив, в котором в качестве ключей будут использоваться значения в первой колонке, дубликаты будут проигнорированы,
- ARRAY_A — нумерованный массив состоящий из ассоциативных массивов, в качестве индексов которых будут использоваться названия колонок,
- ARRAY_N — нумерованный двумерный массив;
Пример 1.
выводим заголовки всех опубликованных страниц:
Пример 2.
пример с использованием функции setup_postdata, то есть в итоге получается некий аналог WP_Query().
2. get_var
Переходим ко второму методу, get_var, в отличие от get_results, он позволяет вывести одно значение, причем это может быть сумма значений или количество строк.
- column_offset — (целое) номер по порядку нужной колонки (по умолчанию 0)
- row_offset — (целое) номер по порядку нужного ряда (по умолчанию 0)
Пример первый.
выводим дату регистрации какого-то конкретного пользователя:
Пример второй.
пришло время узнать количество зарегистрированных пользователей на нашем блоге:
Пример третий
подсчитаем сумму чего-нибудь из метаданных пользователя:
3. get_row
Получает значения только из одной строки, удовлетворяющей условию.
- output_type — тип вывода данных,
- OBJECT — объект (по умолчанию),
- ARRAY_A — ассоциативный массив,
- ARRAY_N — нумерованный массив;
- row_offset — (целое) номер по порядку нужного ряда (по умолчанию 0)
Пример 1.
выводим заголовок поста с самым большим количеством комментариев:
Пример 2.
используем для тех же целей ассоциативный массив:
4. get_col
Вывод данных только из одной колонки, в результате получаем одномерный объект.
- column_offset — (целое) номер по порядку нужной колонки (по умолчанию 0)
Пример:
выводим заголовок самой первой опубликованной страницы:
INSERT
Предназначен для вставки строки в таблицу. Сразу перейду к примеру, потому что в синтаксисе на первый взгляд будет мало чего понятно.
UPDATE
Предположим в прошлом примере мы всё-таки создали строку и сейчас хотим её обновить:
Теги: $wpdb база данных mysql SQL