Працюємо з базою даних wordpress, за допомогою класу wpdb

Як створити сайт »CMS» Wordpress »Працюємо з базою даних в WordPress. Основи роботи з базою даних в WordPress, за допомогою класу wpdb

Так як ця функціональність вбудована в WordPress, не потрібно відкривати окреме з'єднання бази даних (в такому випадку ви будете дублювати код), і не потрібно виконувати хакі, такі як зміну результуючого безлічі після того, як до нього був виконаний запит.

Працюємо з базою даних wordpress, за допомогою класу wpdb

Клас $ wpdb моделює і автоматизує безліч завдань, пов'язаних з базою даних WordPress. .

Хочете швидко навчитися створювати сайти і блоги на WordPress з унікальним дизайном?

Отримайте найповнішу в Рунеті безкоштовну систему навчання створення сайтів на WordPress

Починаємо працювати з базою даних в WordPress

Об'єкт $ results тепер містить ваші дані в наступному форматі:

Витяг результатів з бази даних

Якщо ви хочете знайти і вибрати якусь інформацію з бази даних WordPress, можете застосувати для структурування даних, одну з чотирьох функцій-асистентів.

Це та функція, яку ми розглядали раніше. Вона підходить найкраще, коли вам потрібні двомірні дані (безліч рядків і колонок). Вона перетворює дані в масив, що містить окремі об'єкти для кожного рядка.

Вставка в базу даних

Щоб зробити вставку, можна використовувати метод insert:

Цей метод приймає три аргументи. Перший визначає назву таблиці, в яку ви вставляєте дані. Другий аргумент - це масив, що містить колонки і їх відповідні значення як пари «ключ-значення» (key-value). Третій параметр визначає тип даних ваших значень в тому порядку, які ви їм присвоїли. Ось приклад:

Якщо ви звикли записувати свої вставки, він спочатку може здатися громіздким, але насправді так ви отримуєте більшу гнучкість, тому що цей метод використовує масиви як вводи.

Визначення формату - додаткова опція; всі значення за замовчуванням вважаються рядками, але включати його в метод - усталена практика. Три значення, які ви можете використовувати - це% s для рядків,. для десяткових чисел і% f для чисел з плаваючою точкою.

Ефективно використовувати час

До даного моменту ви вже не здивуєтеся, коли почуєте, що для поновлення даних у нас також є метод-асистент з дуже сильним назвою update (). Його застосування нагадує те, що ми бачили вище; але для маніпулювання виразом where нашого поновлення потрібні два додаткові параметри.

Параметри $ table, $ data і $ format повинні бути вам знайомі; вони все ті ж, що колись. Використовуючи параметр $ where, ми можемо визначити умови поновлення. Це повинен бути масив в формі пар «колонка-значення» (column-value). Якщо ви визначаєте множинні параметри, то вони будуть об'єднані логікою AND. $ Where_format - такий же, як $ format: він визначає формат значень в параметрі $ where.

Інші запити

У той час як представлені вище помічники просто відмінні, іноді необхідне виконання інших або більш складних запитів, ніж можуть дозволити асистенти. Якщо вам потрібно виконати оновлення зі складним пропозицією where, що містить множинну логіку AND / OR, то ви не зможете застосувати метод update (). Якщо вам потрібно зробити щось на зразок видалення рядка або установки набору характеристик з'єднання, то вам би знадобилося використовувати «загальний» метод query (), що дає можливість виконувати будь-який вид запитів.

Захист і валідація

Сподіваюся, вам не потрібно розповідати про те, як важливо переконатися, що ваші дані захищені та що вашою базою даних не зможуть маніпулювати! Валідація даних трохи виходить за межі цієї статті, але обов'язково подивіться коли-небудь, що може сказати Кодекс WordPress про Валідації даних (Data Validation).

До того ж до валідації вам знадобиться екранувати всі запити (escape). Навіть якщо ви не знайомі з атаками SQL-ін'єкції. все одно застосовуйте цей метод, а пізніше почитайте про нього, тому що це дуже важливо.

Хороша новина: якщо ви застосовуєте будь-які функції-помічники, то вам не потрібно нічого робити: запит для вас вже екранований. Однак якщо ви застосовуєте метод query (), екранування вам доведеться вручну за допомогою методу prepare ().

Щоб це було трохи більше легкотравно, давайте трохи перепишемо цей основний формат.

Бачите, все не так вже й страшно. Замість додавання дійсних значень там, де ви зазвичай додали б їх, ви вводите тип даних, а потім додаєте справжні дані як наступні параметри.

Змінні класу та інші методи

Кожен раз при вставці чого-небудь в таблицю у вас там напевно з'явиться автоматично прирощений ID. Щоб знайти значення самої останньої вставки, виконаної вашим скриптом, можна використовувати $ wpdb-> insert_id.

Хочете швидко навчитися створювати сайти і блоги на WordPress з унікальним дизайном?

Отримайте найповнішу в Рунеті безкоштовну систему навчання створення сайтів на WordPress

Ми використовуємо її, тому що у нас є можливість вибирати префікс для своїх таблиць WordPress. У той час як більшість людей використовує префікс за замовчуванням wp, деякі користувачі хочуть або потребують призначеному для користувача префікс. В ім'я гнучкості цей префікс жорстко не кодується, так що якщо ви пишете плагін і застосовуєте в запиті wp_postmeta замість $ wpdb-> postmeta, ваш код на деяких вебсайтах не стане працювати.

Якщо вам потрібно отримати дані з небазової таблиці WordPress, для цього немає жодної спеціальної змінної. В такому випадку ви можете просто написати назву таблиці, як зазвичай.

Управління повідомленнями про помилку

Викликаючи методи show_errors () або hide_errors (), можна включати або вимикати повідомлення про помилки (за замовчуванням вони вимкнені), щоб отримати більше інформації про те, що відбувається. У будь-якому випадку для роздруківки помилок останнього запиту ви також можете застосовувати метод print_error ().

Побудова простого відстеження із застосуванням знання $ wpdb

Якщо ви новачок, то, можливо, розумієте, про що я говорю, але, може бути, знаходите складним для реалізації. Отже, давайте візьмемо приклад простого плагіна відстеження WordPress, який я зробив для сайту.

Простоти заради я не стану описувати кожну деталь цього плагіна. Просто покажу структуру бази даних і кілька запитів.

Структура нашої таблиці

ID
Автоматично збільшень ID.

time
Дату і час вчинення дії.

action
Вид дії (тобто клацання або наведення).

action_url
Сторінка, на якій ініційовано дію.

user_id
ID користувача, якщо він залягання.

user_ip
IP користувача для усунення будь-яких злочинних намірів.

Ця таблиця досить швидко стане вельми великий, тому вона згрупована в щоденну статистику і час від часу видаляється. А тепер давайте просто попрацюємо з нею.

Вставка даних в таблиці

Потім ми можемо вставити ці дані в базу даних за допомогою нашого методу-помічника, як тут:

З ризиком догляду в сторону від справи я звернуся до деяких питань, які могли зацікавити вас в цьому окремо взятому прикладі. Ви могли подумати, а як же щодо валідації даних? Клацання міг надійти від адміністратора веб або користувач міг помилково клацнути двічі, або могло статися безліч інших речей.

Ми вирішили, що, так як нам не потрібна статистика в реальному часі (достатньо щоденної статистики), немає сенсу перевіряти дані при кожному внесенні. Щодня в районі опівночі, під час низького рівня трафіку, дані збираються в нову таблицю. Перед групуванням даних ми забезпечуємо її очищення, видаляючи дублікати і так далі. Дані, звичайно, екрануються перед вставкою в таблицю, тому що ми застосовуємо функцію-помічника; таким чином, тут ми себе убезпечили.

Просто видалити оптом все зроблене адміністраторами легше, ніж робити перевірку за будь-якої вставці. Таким чином, з плечей сервера знімається вантаж значної кількості обробки.

Видалення дій з IP, внесеного в «чорний список»

Ви, можливо, помітили, що я все ще екранують дані, навіть якщо IP отриманий з безпечного джерела. Я запропонував би екранувати даних кров з носу. По-перше, справжні хакери гарні в своїй справі, тому що вони відмінні програмісти і можуть перехитрити вас такими способами, про які ви і не подумали б. Крім цього, я особисто зробив більше на шкоду своїм вебсайтам, ніж хакери, так що я все це роблю і як засіб проти самого себе.

Фінальні думки і підказки

Сподіваюся, ви тепер краще розумієте клас WordPress $ wpdb і зможете застосовувати його для поліпшення своїх проектів. На закінчення ось вам кілька останніх підказок і прийомів ефективного використання цього класу.

Я благаю вас бути обачними: разом з великими можливостями з'являється велика відповідальність. Забезпечте екранування своїх даних і їх валідацію, тому що неправильне застосування цього класу - ймовірно основна причина зламаних веб-сайтів!

У той час як можна застосовувати метод query () для будь-якого запиту, краще, де можливо, використовувати методи-асистенти (insert, update, get_row і т.д.). Вони більш модульні і безпечні, тому що автоматично екранують ваші дані.

Почитайте в офіційній документації про всі змінних класу та інші відомості. Це допоможе вам використовувати всі можливості класу. Я також рекомендую прочитати про загальний застосуванні класу ezSQL в своїх не-WordPress проектах; я застосовую його виключно майже всюди.

На цьому, урок по професійної взаємодії з базою даних в WordPress, закінчено.

Редакція: Команда webformyself.

Хочете швидко навчитися створювати сайти і блоги на WordPress з унікальним дизайном?

Отримайте найповнішу в Рунеті безкоштовну систему навчання створення сайтів на WordPress

Найсвіжіші новини IT і веб-розробки на нашому Telegram-каналі

Працюємо з базою даних wordpress, за допомогою класу wpdb

Курс WordPress-Учень

12 фішок без яких Ви гарантовано не створите повноцінний сайт на WordPress!

Схожі статті