Использование класса $wpdb CMS WordPress
Бойтесь людей равнодушных — именно с их молчаливого согласия происходят все самые ужасные преступления на свете.
от admin
Приведено описание возможностей класса $wpdb по взаимодействию с базой данных системы управления контентом WordPress. Приведены ссылки на описание наиболее часто используемых методов класса.
Класс wpdb системы WordPress
В PHP скриптах WordPress реализован класс для взаимодействия с базой данных. Он представлен переменной $wpdb, находится в файле /wp-includes/wp-db.php и предоставляет администратору системы управления контентом WordPress готовый и удобный инструментарий для взаимодействия с базами данных MySQL. С его помощью можно работать не только с таблицами базы данных WordPress, но и с дополнительными таблицами, как WordPress, так и любой другой базы данных, единственное, надо учесть, что объект
И последнее, для доступа к методам объекта внутри пользовательских функций переменную, которая ссылается на объект, т.е., $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(
- $wpdb->get_col_info( ‘вид информации’, смещение_колонки ) — возвращает справочную информацию о запрошенной колонке или колонках.
- $wpdb->flush() — очищает кзш SQL запросов;
Как сделать запрос к базе данных WordPress с помощью WPDB Class
Как сделать запрос к базе данных WordPress с помощью WPDB ClassBlog – OodlestechnologiesОтправленный: Суровый Сони | 31 января 2018 г.
носкл
Как сделать запрос к базе данных 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 позволило ему создавать динамические и интерактивные пользовательские интерфейсы, используя возможности современных интерфейсных фреймворков.
Запрос предложений
Файлы cookie важны для правильного функционирования сайта. Чтобы улучшить ваш опыт, мы используем файлы cookie, чтобы запоминать данные для входа и обеспечивать безопасный вход в систему, собирать статистику для оптимизации функциональности сайта и предоставлять контент, соответствующий вашим интересам. Нажмите «Принять и продолжить», чтобы принять файлы cookie и перейти непосредственно на сайт, или нажмите «Просмотреть настройки файлов cookie», чтобы просмотреть подробные описания типов файлов cookie и выбрать, принимать ли определенные файлы cookie во время пребывания на сайте.
запросов WordPress с пунктами IN (кто знал)?
А как насчет случая, когда у вас есть несколько разных ключей, которые могут привести к созданию массива действительно длины для класса WP_Meta_Query ? Например, что, если бы вам пришлось перебрать набор данных еще до того, как был задан запрос?
На каком-то уровне может показаться, что естественным было бы сделать следующее:
- перебрать набор ключей,
- динамически накапливать результаты,
- объединить их в один набор результатов,
- , тогда работайте с тем, что вам дали.
Но не звучит ли это несколько громоздко (не говоря уже о медленности)?
Когда дело доходит до использования WordPress API, я делаю все, что в моих силах, чтобы придерживаться его, прежде чем обращаться, скажем, непосредственно к базе данных. код только для того, чтобы заставить WordPress API работать.
Прежде чем перейти к обоснованию почему Я сделал то, что сделал, я хочу объяснить проблему и подход. Это, вероятно, убережет кого-то от преждевременного перехода к комментариям.
Этот скриншот не имеет ничего общего с запросом. Просто снимок IDE для развлечения.
Итак, вот:
- У меня есть стандартный массив значений, которые в конечном итоге используются для получения метаданных и создания из них пользовательского типа записи (поскольку они были импортированы из стороннего источника).
- Я большой сторонник параметризации запросов (и, следовательно, использования prepare ), чтобы убедиться, что данные правильно запрашиваются в базе данных. К сожалению, при попытке выполнить этот запрос произошло , а не . Я объясню почему позже в этом посте.
- Таким образом, взять массив и преобразовать его в строку полезно, но по-прежнему не решает проблему, почему стандартная функция подготовки не работала.
С учетом сказанного я объясню несколько вещей:
- почему я решил использовать массив для хранения значений метаданных,
- почему я использовал implode чтобы преобразовать их в строку,
- , почему я , а не , используя , подготовьте для обработки запроса.
О значениях метаданных
Причина хранения метаданных в массиве в качестве свойства класса заключается в том, что этот массив может меняться со временем.
То есть нам может потребоваться импортировать дополнительные сторонние данные, удалить сторонние данные или внести некоторые изменения в уже имеющиеся.
Когда эти данные хранятся в одном месте, это значительно упрощает управление будущими версиями кода.
Внедрение массива
Всякий раз, когда вы выполняете запрос к базе данных и должны работать с массивом данных, вы можете использовать WP_Meta_Query и использовать каждый ключ как часть массива аргументов.
Но если у вас есть относительно большой набор данных, то вам сначала нужно пройти все из них, потом вы должны создать запрос, затем вы должны его обработать.
И после того, как вы все это сделали, я не уверен, что написанный код не был получен за счет производительности. Вот почему иногда я предпочитаю использовать wpdb .
Не Использование PrepareТеперь при непосредственном взаимодействии с базой данных я стараюсь убедиться:
- У меня есть для этого веская причина,
- Я использую параметризованные запросы.
Но я некоторое время работал с этим конкретным набором данных, пытаясь использовать все возможные варианты разработки WordPress, о которых я знаю (включая разговоры с несколькими коллегами об этом), чтобы попытаться сделать эту работу наилучшим образом. возможный.
Но этого не произошло. И тогда я наткнулся на следующую страницу в Кодексе:
В 99% случаев вместо этого можно использовать $wpdb->prepare(), и это рекомендуемый метод.