Wordpress

WordPress wpdb: вставлять, обновлять, получать или удалять данные.

09.08.2023

Использование класса $wpdb CMS WordPress

Бойтесь людей равнодушных — именно с их молчаливого согласия происходят все самые ужасные преступления на свете.

от admin

Приведено описание возможностей класса $wpdb по взаимодействию с базой данных системы управления контентом WordPress. Приведены ссылки на описание наиболее часто используемых методов класса.

Класс wpdb системы WordPress

В PHP скриптах WordPress реализован класс для взаимодействия с базой данных. Он представлен переменной $wpdb, находится в файле /wp-includes/wp-db.php и предоставляет администратору системы управления контентом WordPress готовый и удобный инструментарий для взаимодействия с базами данных MySQL. С его помощью можно работать не только с таблицами базы данных WordPress, но и с дополнительными таблицами, как WordPress, так и любой другой базы данных, единственное, надо учесть, что объект

$wpdb работает только с текущим подключением к БД, в нашем случае с базой данных системы WordPress. Для взаимодействия с другими базами данных необходимо создать новый экземпляр класса $wpdb со своими параметрами соединения к требуемой базе данных.
И последнее, для доступа к методам объекта внутри пользовательских функций переменную, которая ссылается на объект, т.е., $wpdb, надо сделать глобальной, иначе переменная с таким именем будет интерпретироваться как локальная переменная функции. Для этого внутри функции надо прописать

global $wpdb;        // глобализация объекта 


Перечень основных методов класса $wpdb

Код объекта хорошо документирован, где находится — приведено выше. Для тех же, кому нужно описание методов, привожу их список с кратким описанием. Более детальную информацию по приведенным методам с примерами использования можно получить перейдя по ссылке интересуемого метода.

  • $wpdb->query( ‘строка_запроса’ ) — выполняет SQL запрос к базе данных;
  • $wpdb->get_results( ‘строка_запроса’, ‘тип выхода’ ) — возвращает запрошенный набор данных;
  • $wpdb->get_row( ‘строка_запроса’, тип выхода, смещение_строки
    )
    — возвращает одну запись таблицы;
  • $wpdb->get_var( ‘строка_запроса’, смещение_колонки, смещение_строки) — возвращает значение ячейки таблицы;
  • $wpdb->get_col( ‘строка_запроса’, смещение_колонки ) — возвращает столбцец таблицы;
  • $wpdb->prepare( ‘строка_запроса’ [, параметр1, параметр2 … ] ) — защищает запрос от внедрения SQL кода;
  • $wpdb->insert( table, $data, $format ) — вставляет в таблицу новую запись;
  • $wpdb->update(
    $table, $data, $where, $data_format = null, $where_format = null )
    — изменяет запись таблицы;
  • $wpdb->get_col_info( ‘вид информации’, смещение_колонки ) — возвращает справочную информацию о запрошенной колонке или колонках.
  • $wpdb->flush() — очищает кзш SQL запросов;

Как сделать запрос к базе данных WordPress с помощью WPDB Class

Как сделать запрос к базе данных WordPress с помощью WPDB ClassBlog – Oodlestechnologies
Отправленный: Суровый Сони | 31 января 2018 г.

носкл

Как сделать запрос к базе данных WordPress, используя класс $wpdb

Поскольку мы знакомы с функциями, которые WordPress использует для взаимодействия с базой данных. Некоторые общие функции: WP_Query, wp_insert_post, get_posts, update_post_meta, которые можно использовать для выполнения работы. Но иногда нам требовался прямой доступ к базе данных, особенно когда мы собираемся получить данные из пользовательской таблицы. WordPress также предоставил действенный способ упростить работу пользователей, представив класс $wpdb.

 

 

Работа с классом $wpdb аналогична работе с MySql и другими подобными языками. Нам нужно помнить только несколько имен функций. Мы можем понять это на примере,

 

 

 

$wpdb имеет четыре вспомогательные функции для извлечения данных из запроса, вы можете использовать одну из четырех функций для структурирования данных.

 

GET_RESULTS() Наиболее часто используемая функция, она создает двумерный массив данных, содержащий отдельные объекты для каждой строки.

 

GET_ROW() Когда нам нужно получить только одну строку из базы данных. Это дает одномерный вывод.

 

GET_COL() Это похоже на функцию get_row(), вместо строки она дает один столбец, что полезно, когда нам нужно получить только идентификатор сообщения.

 

GET_VAR() Иногда нам нужно получить только одно значение из базы данных, тогда мы можем использовать get_var() для получения значения.

 

 

 

Здесь функция вставки принимает три параметра. Параметр $table будет принимать имя таблицы. $data — это массив, содержащий комбинацию пар ключ-значение. $format является необязательным и указывает типы данных значений.

 

 

 

Установите значения параметров $table, $data и $where для обновления изменений в базе данных.

 

Подробнее о классе $wpdb и его функциях можно прочитать здесь.

 

Примечание. Класс wpdb() не следует вызывать напрямую. Всегда используйте глобальный объект $wpdb для операций с базой данных.

 

 

Об авторе

Харш Сони

Харш — опытный разработчик программного обеспечения, специализирующийся на стеке MEAN. Он имеет опыт работы с широким спектром веб-технологий, включая Angular, Node.js, PHP, AWS и Docker. На протяжении всей своей карьеры Харш демонстрировал твердую приверженность предоставлению высококачественных программных решений, отвечающих уникальным потребностям его клиентов. и организаций. Его знание Angular и Node.js позволило ему создавать динамические и интерактивные пользовательские интерфейсы, используя возможности современных интерфейсных фреймворков.

Опыт Харша также распространяется на облачные вычисления и управление инфраструктурой с помощью AWS, что позволяет ему с легкостью разрабатывать и развертывать масштабируемые приложения. Кроме того, его знание Docker позволило ему упростить процесс разработки и развертывания, повысив эффективность и сократив время выхода на рынок. Он преуспевает в анализе сложных технических проблем и разработке эффективных стратегий для их преодоления, обеспечивая успешное завершение проектов в установленные сроки.

Запрос предложений

Файлы cookie важны для правильного функционирования сайта. Чтобы улучшить ваш опыт, мы используем файлы cookie, чтобы запоминать данные для входа и обеспечивать безопасный вход в систему, собирать статистику для оптимизации функциональности сайта и предоставлять контент, соответствующий вашим интересам. Нажмите «Принять и продолжить», чтобы принять файлы cookie и перейти непосредственно на сайт, или нажмите «Просмотреть настройки файлов cookie», чтобы просмотреть подробные описания типов файлов cookie и выбрать, принимать ли определенные файлы cookie во время пребывания на сайте.


запросов WordPress с пунктами IN (кто знал)?

Чуть больше года назад я написал статью о том, как использовать WP_Meta_Query всякий раз, когда у вас есть набор ключей, которые вы хотите использовать для извлечения информации из базы данных.

А как насчет случая, когда у вас есть несколько разных ключей, которые могут привести к созданию массива действительно длины для класса WP_Meta_Query ? Например, что, если бы вам пришлось перебрать набор данных еще до того, как был задан запрос?

На каком-то уровне может показаться, что естественным было бы сделать следующее:

  1. перебрать набор ключей,
  2. динамически накапливать результаты,
  3. объединить их в один набор результатов,
  4. , тогда работайте с тем, что вам дали.

Но не звучит ли это несколько громоздко (не говоря уже о медленности)?

Когда дело доходит до использования WordPress API, я делаю все, что в моих силах, чтобы придерживаться его, прежде чем обращаться, скажем, непосредственно к базе данных. код только для того, чтобы заставить WordPress API работать.

Прежде чем перейти к обоснованию почему Я сделал то, что сделал, я хочу объяснить проблему и подход. Это, вероятно, убережет кого-то от преждевременного перехода к комментариям.

Этот скриншот не имеет ничего общего с запросом. Просто снимок IDE для развлечения.

Итак, вот:

  • У меня есть стандартный массив значений, которые в конечном итоге используются для получения метаданных и создания из них пользовательского типа записи (поскольку они были импортированы из стороннего источника).
  • Я большой сторонник параметризации запросов (и, следовательно, использования prepare ), чтобы убедиться, что данные правильно запрашиваются в базе данных. К сожалению, при попытке выполнить этот запрос произошло , а не . Я объясню почему позже в этом посте.
  • Таким образом, взять массив и преобразовать его в строку полезно, но по-прежнему не решает проблему, почему стандартная функция подготовки не работала.

С учетом сказанного я объясню несколько вещей:

  1. почему я решил использовать массив для хранения значений метаданных,
  2. почему я использовал implode чтобы преобразовать их в строку,
  3. , почему я , а не , используя , подготовьте для обработки запроса.

О значениях метаданных

Причина хранения метаданных в массиве в качестве свойства класса заключается в том, что этот массив может меняться со временем.

То есть нам может потребоваться импортировать дополнительные сторонние данные, удалить сторонние данные или внести некоторые изменения в уже имеющиеся.

Когда эти данные хранятся в одном месте, это значительно упрощает управление будущими версиями кода.

Внедрение массива

Всякий раз, когда вы выполняете запрос к базе данных и должны работать с массивом данных, вы можете использовать WP_Meta_Query и использовать каждый ключ как часть массива аргументов.

Но если у вас есть относительно большой набор данных, то вам сначала нужно пройти все из них, потом вы должны создать запрос, затем вы должны его обработать.

И после того, как вы все это сделали, я не уверен, что написанный код не был получен за счет производительности. Вот почему иногда я предпочитаю использовать wpdb .

Не Использование Prepare

Теперь при непосредственном взаимодействии с базой данных я стараюсь убедиться:

  1. У меня есть для этого веская причина,
  2. Я использую параметризованные запросы.

Но я некоторое время работал с этим конкретным набором данных, пытаясь использовать все возможные варианты разработки WordPress, о которых я знаю (включая разговоры с несколькими коллегами об этом), чтобы попытаться сделать эту работу наилучшим образом. возможный.

Но этого не произошло. И тогда я наткнулся на следующую страницу в Кодексе:

В 99% случаев вместо этого можно использовать $wpdb->prepare(), и это рекомендуемый метод.

Добавить комментарий

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