База данных Wordpress $ wpdb против get_option () - PullRequest
5 голосов
/ 07 января 2010

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

Теперь я видел некоторые учебные пособия, показывающие, как использовать глобальный способ $ wpdb для получения значений из базы данных.

В чем разница между двумя, и один лучше, чем другой?

Ответы [ 5 ]

3 голосов
/ 09 февраля 2010

Для хранения опций плагина или легких данных, связанных с постами, идеально подходят get_option (), get_post_meta () и связанные с ними функции. Для работы с реляционными базами данных лучшим выбором будет $ wpdb И вот почему:

$ wpdb - это класс, основанный на PHP-классе ezSQL для взаимодействия с базой данных. Некоторые функции включают в себя:

1) обеспечивает защиту от внедрения SQL с использованием методов $ wpdb-> prepare (), $ wpdb-> insert () и $ wpdb-> update (). get_option () - вспомогательная функция, которая позволяет вам создать пару Key => Value.

2) $ wpdb прост в использовании. Он может возвращать наборы записей в различных формах: $ wpdb-> get_results ($ sql, ARRAY_A), массив или ассоциативные массивы, содержащие возвращенные строки, ключами которых являются имена столбцов. $ wpdb-> get_results ($ sql) вернет массив объекта с именем столбца в качестве свойств объекта. $ wpdb-> get_var ($ sql) возвращает скалярный результат (первый столбец первой строки набора данных из запроса). $ wpdb-> get_row ($ sql) возвращает одну строку в качестве объекта.

3) $ wpdb позволяет вам взаимодействовать с любой таблицей в базе данных, даже выполняя запросы произвольной формы, используя $ wpdb-> query ($ sql)

4) WordPress, скорее всего, гарантирует, что ваши взаимодействия с $ wpdb не будут нуждаться в изменении, если они добавят поддержку баз данных, отличных от MySQL. Первоначальный класс ezSQL предназначался для обеспечения некоторой поддержки баз данных.

Итак, если вам нужно работать с данными в реляционной форме, $ wpdb действительно отличный выбор для WordPress.

get_option () и get_post_meta () предоставляют простой способ работы с небольшими объемами данных, относящимися к конкретному сообщению в случае get_post_meta () или в виде пары Key => Value с get_option ().

Одна из приятных вещей в этом заключается в том, что вы можете сохранить сериализованный массив или объект и вернуть эти данные в виде массива или объекта. Это дает вам очень простой способ работы с полями данных, как если бы у вас была таблица базы данных. Однако это не очень хорошо работает, если вам нужно связать данные между таблицами или выполнить суммирование, подсчет или другие вычисления в базе данных по сериализованным данным. В этих случаях лучше использовать полноценную таблицу и $ wpdb.

2 голосов
/ 07 января 2010

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

Вам рекомендуется понять и использовать их помощников, прежде чем подумать о кодировании самостоятельно.

0 голосов
/ 12 ноября 2015

Я использую оба в своем развитии.

  • get_option() гораздо проще для статических или единичных информационных битов
  • $wpdb лучше для хранения многомерной информации

Основное различие заключается в том, что для получения информации (например, лицензионные ключи, даты истечения срока действия и статическая информация) get_option() действительно удобен. Он аккуратный, быстрый и очень простой в использовании.

Но я разрабатываю плагины, которые управляют пользовательскими данными и отправкой форм, и в подобных случаях get_option() не предлагает нужной мне универсальности без написания большого количества составных массивов или попытки отслеживания нескольких вариантов. Для многомерной информации или для перекрестных ссылок на связанные записи данных для плагина $wpdb намного лучше - вы можете структурировать свои собственные таблицы и сортировать / организовывать, как вам нравится.

:)

0 голосов
/ 07 января 2010

Я использовал оба раньше. Если вы можете использовать вспомогательные функции, вы должны это сделать. Если вам нужно сделать что-то особенное, вы можете использовать глобальный. Я использую глобальный, только если я должен написать свой собственный запрос

0 голосов
/ 07 января 2010

Глобальная переменная $ wpdb является более мощной, чем функция get_option (), поскольку она позволяет вам манипулировать и получать данные из любой таблицы в WordPress, включая все таблицы плагинов. Это дает вам больше возможностей, чем просто получение доступа к таблице параметров.

Вы должны использовать get_option () , когда вы специально извлекаете параметр из таблицы параметров, используемой для параметров плагинов. Другие варианты этой функции add_option, update_option и delete_option. Все связанные функции должны использоваться специально для параметров плагина.

...