wpdb{}
Дозволяє виконувати будь-які операції з базою даних WordPress: вставляти, оновлювати, отримувати чи видаляти дані.
WordPress надає можливість зручно маніпулювати своєю базою даних за рахунок php класу wpdb .
PHP клас – відноситься до ООП (об’єктно-орієнтованого програмування) і в традиційному своєму розумінні є повністю самодостатнім кодом, який повинен виконувати певну функцію. Наприклад, у цьому випадку через клас wpdb ми можемо проводити всілякі операції з Базою Даних WordPress знаючи всього кілька “важелів” управління класом, які називаються методами.
Звертатися до методів класу wpdb потрібно обов’язково через глобальну змінну $wpdb (це екземпляр класу wpdb ). Також потрібно пам’ятати, що всередині звичайних функцій потрібно обов’язково глобалізувати $wpdb , інакше вона буде простою змінною всередині функції, робиться це так:
global $wpdb;
За допомогою методів $wpdb можна керувати довільними таблицями у базі даних, не обов’язково лише тими, що були створені WordPress. Допустимо, серед інших таблиць WP є таблиця newtable і нам потрібно вибрати всі поля id з неї. Реалізувати це можна таким SQL запитом, використовуючи $wpdb :
$newtable = $wpdb->get_results( "SELECT id FROM newtable");
Створювати таблиці рекомендується за допомогою функції dbDelta() . Або можна використовувати звичайний SQL запит та метод $wpdb->query(‘CREATE TABLE…’); .
Для плагінів створення нових таблиць зазвичай вішається на хук активації плагіна, див. register_activation_hook() .
Створення окремого підключення до бази даних
Потрібно розуміти, що один об’єкт класу wpdb{}
працює з однією базою даних – з поточною базою даних WordPress. Якщо потрібно працювати паралельно з будь-якою іншою БД, то потрібно створити ще один об’єкт класу wpdb із зазначенням нових параметрів з’єднання, відмінних від тих, що вказані в wp-config.php . Робиться це так:
global $wpdb2; $wpdb2 = new wpdb( 'ім'я_юзера', 'пароль', 'назва_БД', 'localhost' ); // якщо не вдалося підключитися, і потрібно обірвати PHP з повідомленням про цю помилку if( ! empty($wpdb2->error) ) wp_die($wpdb2->error); // Готово, тепер використовуємо функції класу wpdb $results = $wpdb2->get_results( "SELECT * FROM table");
Для складних з’єднань з кількома БД (репліками) є хороший плагін, який рекомендують розробники WP – hyperdb . Цей плагін розширює можливості базового класу wpdb. Встановлюється він не як звичайний плагін і вимагає певних знань роботи з базами даних (інакше, користі від цього плагіна не буде).
Хуки із класу
Повертає
Примірник класу wpdb.
Використання
global $wpdb; $result = $wpdb->query("UPDATE...");
Приклади
#1 Демонстрація використання методів класу
global $wpdb; $done = $wpdb->query( "UPDATE ..."); // get data $objects = $wpdb->get_results( "SELECT ..."); $object = $wpdb->get_row( "SELECT ..."); $values = $wpdb->get_col( "SELECT ..."); $var = $wpdb->get_var( "SELECT ..."); $var = $wpdb->get_var( "SELECT ..."); // CRUD data $done = $wpdb->insert( 'table', [ 'column' => 'foo', 'field' => 'bar' ] ); $done = $wpdb->update( 'table', [ 'column' => $_GET['val'] ], [ 'ID' => 1 ] ); $done = $wpdb->delete( 'table', [ 'ID' => 1 ] ); $done = $wpdb->replace( 'table_name', [ 'ID' => 1, 'column' => $_GET['val'] ] );
query — довільний запит до бази даних WordPress
Виконує будь-які запити до бази даних WordPress.
Цей метод передбачає виконання всіх запитів, крім SELECT. Для SELECT є спеціальні методи: $wpdb->get_results , $wpdb->get_row , $wpdb->get_col , $wpdb->get_var .
Майте на увазі, що як і для всіх функцій класу wpdb , параметри, що передаються, потрібно очистити від SQL ін’єкцій, зробити це можна двома способами:
// спосіб 1 esc_sql( $user_entered_data_string ) // спосіб 2 $wpdb->prepare( 'query' , value_parameter[, value_parameter ... ] )
Докладніше читайте у секції “Захист запитів від SQL ін’єкцій”
Повертає
int|true|false
.
true
— для запитів CREATE , ALTER , TRUNCATE , DROP .Число
– Задіяних рядків, для запитів:DELETE
/UPDATE
/SELECT
.false
– Коли запит викликав помилку.
Використання
global $wpdb; $wpdb->query($query);
-
$query
(рядок) (обов’язковий) - Database query.
Приклади
#1 Видалити довільне поле ‘gargle’ та його значення біля посту 13
$wpdb->query( "DELETE FROM $wpdb->postmeta WHERE post_id = '13' AND meta_key = 'gargle'" );
#2 Встановити батьківську сторінку 7 для сторінки 15
$wpdb->query( "UPDATE $wpdb->posts SET post_parent = 7 WHERE ID = 15 AND post_status = 'static'" );
#3 Видалити осиротілі довільні поля
$wpdb->query("DELETE pm FROM $wpdb->postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL");
#4 Змінимо ключ у полів-повторювачів ACF
$wpdb->query( " UPDATE $wpdb->postmeta SET meta_key = REPLACE(meta_key, 'knowledge-base-type', 'knowledge-base-list') WHERE `meta_key` LIKE '%knowledge-base-type%' ");
get_var – отримання певного осередку таблиці
Отримує значення одного осередку з результату запиту. За замовчуванням береться перший осередок – це перший стовпчик і перший рядок.
Якщо результат запиту містить більше однієї колонки та/або більше одного рядка, то буде повернено значення зазначеної комірки (вказується у 2 та 3 параметрах). Так, щоб отримати значення другого осередку з другого рядка результату запиту, потрібно вказати другий і третій параметри: $ column_offset = 1 $ row_offset = 1 .
Якщо викликати метод без запиту: $query = null
, то повернеться значення вказаної комірки попереднього запиту.
Повертає
Строку|null
. Значення осередку таблиці бази даних у вигляді рядка.
значение ячейки
— якщо запит отримує значення однієї комірки (колонки у рядку).значение первой ячейки первой колонки
— якщо запит отримує один рядок та кілька колонок.значение первой ячейки первой строки и колонки
— якщо запит отримує кілька рядків та стовпчиків.NULL
– Коли результату немає.
Використання
$wpdb->get_var( 'query', $column_offset, $row_offset );
-
query
(рядок/null) -
Запит, який потрібно виконати. Можна встановити цей параметр значення
null , тоді функція поверне результат останнього запиту, який був виконаний класом (зберігся в змінній). -
column_offset
(число) - Потрібна колонка (відступ колонкам). за замовчуванням 0 – перша колонка.
-
row_offset
(число) - Потрібний рядок (відступ по рядках). за замовчуванням 0 – перший рядок.
Приклади
#1 Виведемо на екран кількість користувачів
$user_count = $wpdb->get_var( "SELECT COUNT(*) FROM $wpdb->users;" ); echo '<p>Кількість користувачів дорівнює: ' . $user_count . '</p>';
#2 Виведемо на екран суму значень певних довільних полів
// Визначаємо довільний ключ, який потрібно порахувати $meta_key = 'miles'; $allmiles = $wpdb->get_var($wpdb->prepare( "SELECT sum(meta_value) FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key )); echo '<p>Загальна кількість довільних полів miles: '.$allmiles . '</p>';
#3 Набір висновків статистики блогу
# Загальна Кількість авторів блогу function get_totalauthors() { global $wpdb; $totalauthors = intval( $wpdb->get_var( " SELECT COUNT(ID) FROM $wpdb->users LEFT JOIN $wpdb->usermeta ON $wpdb->usermeta.user_id = $wpdb->users.ID WHERE $wpdb->users.user_activation_key = '' AND $wpdb->usermeta.meta_key = '{$wpdb->prefix}user_level' AND (meta_value+0.00) > 1 " ))); return $totalauthors; } # Загальна кількість постів function get_totalposts(){ global $wpdb; $totalposts = intval( $wpdb->get_var( "SELECT COUNT(ID) FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'" ))); return $totalposts; } # Загальна кількість сторінок function get_totalpages() { global $wpdb; $totalpages = intval( $wpdb->get_var( "SELECT COUNT(ID) FROM $wpdb->posts WHERE post_type = 'page' AND post_status = 'publish'" )); return $totalpages; } # Загальна Кількість коментарів function get_totalcomments() { global $wpdb; $totalcomments = intval( $wpdb->get_var( "SELECT COUNT(comment_ID) FROM $wpdb->comments WHERE comment_approved = '1'" )); return $totalcomments; } # Загальна Кількість коментаторів function get_totalcommentposters() { global $wpdb; $totalcommentposters = intval($wpdb->get_var( "SELECT COUNT(DISTINCT comment_author) FROM $wpdb->comments WHERE comment_approved = '1' AND comment_type = ''" )); return $totalcommentposters; } # Загальна Кількість посилань function get_totallinks() { global $wpdb; $totallinks = intval( $wpdb->get_var("SELECT COUNT(link_id) FROM $wpdb->links") ); return $totallinks; }
get_row — Вибір рядка таблиці
Отримує перший рядок з результату запиту SQL. Повертає рядок як об’єкт.
Використовуйте параметр $row_offset , щоб отримати другий, третій, …, n-й рядок із запиту.
Повертає
Массив|Объект|null|null
.
object
– При $output_type = OBJECT (за замовчуванням).array
– При $output_type = ARRAY_A або ARRAY_N.null
– коли не вдалося отримати дані (запитуваних даних немає в бд).
Використання
$wpdb->get_row($query, $output_type, $row_offset);
-
$query
(рядок) - Запит, який потрібно виконати.
-
$output_type
(константа) Одна із трьох констант. Може бути:
- OBJECT – результат буде повернено як об’єкт (за замовчуванням).
- ARRAY_A – результат буде повернено як асоціативного масиву.
- ARRAY_N – результат буде повернуто у вигляді пронумерованого масиву.
За замовчуванням OBJECT
-
$row_offset
(число) -
Номер рядка результату запиту, що повертається.
За замовчуванням 0 (перший рядок)
Приклади
#1 Отримаємо всю інформацію про посилання 10
$mylink = $wpdb->get_row( "SELECT * FROM $wpdb->links WHERE link_id = 10"); // Тепер, властивості (змінні) $mylink - це назви //колонок із таблиці $wpdb->links зі значеннями полів таблиці: echo $mylink->link_id; // виведе на екран "10"
#2 З використанням константи:
$mylink = $wpdb->get_row( "SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_A ); // результатом буде асоціативний масив echo $mylink['link_id']; // виведе на екран "10"
або
$mylink = $wpdb->get_row( "SELECT * FROM $wpdb->links WHERE link_id = 10", ARRAY_N ); // результатом буде пронумерований масив echo $mylink[1]; // Виведе на екран "10"
get_col – вибір стовпця таблиці
Робить запит та отримує дані однієї колонки таблиці бази даних у вигляді масиву.
Якщо запит повернув більше ніж одну колонку (стовпець), то функція поверне лише дані першого стовпця. Можна вказати відступ у параметрі $column_offset , щоб отримати дані не першого стовпця, наприклад другого: $column_offset = 1.
Якщо вказати $query = null , функція поверне вказану колонку з попереднього запиту. Використовуючи цю властивість, можна отримати дані інших колонок з вже зробленого запиту.
Повертає
Массив
. Індексний масив із даними запиту. Порожній масив, коли не вдалося отримати дані.
Використання
global $wpdb; $wpdb->get_col($query, $x);
-
$query
(рядок/null) -
Запит, який потрібно виконати. Можна встановити цей параметр значення
null , тоді функція поверне результат останнього запиту.
Типово: NULL (попередній запит) -
$x
(число) -
Індекс колонки, дані якої потрібно повернути.
За замовчуванням: 0 (перша колонка)
Приклади
#1 Приклад того, як працює метод і що повертає
Припустимо, у нас є такий запит на отримання всіх ревізій:
// вкажемо у запиті одне поле $revision_ids = $wpdb->get_col( "SELECT ID FROM $wpdb->posts WHERE post_type = 'revision'" ); // вкажемо у запиті всі поля $revision_ids = $wpdb->get_col( "SELECT * FROM $wpdb->posts WHERE post_type = 'revision'" ); /* В обох випадках повернеться однаковий масив. Коли вказуються всі поля, get_col отримує лише перше – це ID Array( [0] => 106 [1] => 101 [2] => 102 [3] => 103 ... ) */
#2 Використання без вказівки параметра $query
// спочатку зробимо запит $wpdb->query( "SELECT * FROM $wpdb->posts WHERE post_type = 'revision' LIMIT 10" ); // тепер отримаємо дані цього запиту $revision_ids = $wpdb->get_col( null ); $ revision_names = $ wpdb-> get_col (null, 5); // 5 - post_title /* Array ( [0] => 9949 [1] => 9957 [2] => 10125 [3] => 10154 [4] => 10221 [5] => 10235 [6] => 10319 [7] => 10496 [8] => 10532 [9] => 10568 ) Array ( [0] => wp_tempnam [1] => Шаблони сторінки для типів записів у WP 4.7 [2] => Політика конфіденційності [3] => walker_nav_menu_start_el [4] => Виведення пагінації [5] => enter_title_here [6] => Smart Custom Fields - простий плагін метаполів [7] => register_post_type [8] => Про сайт [9] => REST API у WordPress ) */
#3 NULL замість порожнього рядка
Цей метод повертає NULL як значення поля, якщо значення порожній рядок (перевіряв на версії WP 5.1.1). Але якщо нам потрібно отримати оригінальні дані (порожній рядок), то можна використовувати таку заміну get_col() :
$wpdb->query( "SELECT * FROM $wpdb->posts WHERE post_type = 'revision'" ); $ids = wp_list_pluck( $wpdb->last_result, 'ID' );
#4 Вибір стовпця з результатів запиту
Для цього прикладу уявімо, що у нас блог про автомобілі. Кожен пост описує будь-який автомобіль (наприклад, Ford Mustang 1969). Для кожного посту передбачено по 3 довільні поля: manufacturer (виробник), model(модель) і year(рік випуску). Цей приклад виведе на екран заголовки постів, відфільтрованих за виробником (ford) та відсортованих за моделлю та роком.
get_col тут використовується для того, щоб отримати масив ID всіх записів, які відповідають певним критеріям і відсортовані в потрібному порядку. Потім через цикл foreach ми виводимо заголовки по ID:
<?php $meta_key1 = 'model'; $meta_key2 = 'year'; $meta_key3 = 'manufacturer'; $meta_key3_value = 'Ford'; $postids = $wpdb->get_col($wpdb->prepare(" SELECT key3.post_id FROM $wpdb->postmeta key3 INNER JOIN $wpdb->postmeta key1 on key1.post_id = key3.post_id and key1.meta_key = %s INNER JOIN $wpdb->postmeta key2 on key2.post_id = key3.post_id and key2.meta_key = %s WHERE key3.meta_key = %s and key3.meta_value = %s ORDER BY key1.meta_value, key2.meta_value", $meta_key1, $meta_key2, $meta_key3, $meta_key3_value)); if ($postids) { echo 'List of'. $meta_key3_value . '(s), sorted by '. $meta_key1 . ','. $meta_key2; foreach( $postids as $id ){ $post = get_post(intval($id)); setup_postdata($post); ?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php } }
#5 Список постів, які мають певне довільне поле (Color)
Але вони відсортовані за значенням іншого довільного поля (Display_Order).
$meta_key1 = 'Color'; $meta_key2 = 'Display_Order'; $postids = $wpdb->get_col($wpdb->prepare(" SELECT key1.post_id FROM $wpdb->postmeta key1 INNER JOIN $wpdb->postmeta key2 on key2.post_id = key1.post_id and key2.meta_key = %s WHERE key1.meta_key = %s ORDER BY key2.meta_value+(0) ASC", $meta_key2, $meta_key1)); if ($postids) { echo 'List of'. $meta_key1 . 'posts, sorted by'. $meta_key2; foreach ($postids as $id) { $post=get_post(intval($id)); setup_postdata($post);?> <p><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></p> <?php } }
get_results — вибір кількох рядків таблиці
Отримує всі дані вказаного запиту (всі рядки та колонки). Результат повертається як масиву. Кожен елемент масиву – це об’єкт з даними окремого рядка таблиці.
Повертає
Массив|Объект|null
. Результат запиту до бази даних. Поверне:
Массив объектов
– коли $output = OBJECT або OBJECT_K .Массив массивов
– коли $output = ARRAY_A або ARRAY_N .array()
— коли рядків на запит не знайдено або помилка запиту.NULL
— коли запит порожній рядок або передано неправильний тип виведення ( $output_type ).
Використання
global $wpdb; $wpdb->get_results($query, $output);
-
$query
(рядок) Запит, який потрібно виконати.
Можна встановити цей параметр значення null , тоді функція поверне результат останнього запиту, який було зроблено.
Типово: null
-
$output
(константа/рядок) Прапор вказує у якому вигляді потрібно повернути дані. Можливі 4 варіанти:
OBJECT
– Поверне масив об’єктів з числовими ключами – елементи масиву будуть об’єкти рядків таблиці –[ 0 => object ]
.OBJECT_K
— схожий на попередній, лише в індексах головного масиву будуть значення першої колонки результату запиту —[ 'field' => object ]
.
Зверніть увагу, якщо в індекс будуть потрапляти однакові значення, дані будуть затиратися.ARRAY_N
– Поверне індексний масив, кожен елемент якого буде так само індексним масивом –[ 0 => [...] ]
.ARRAY_A
– Поверне індексний масив, кожен елемент якого буде асоціативним масивом, в якому ключем буде назва колонки –[ 'field' => [...] ]
.
Типово: OBJECT
Приклади
#1 Отримаємо ID та заголовки чернеток, ID автора яких дорівнює 5 і виведемо на екран заголовки постів.
$fivesdrafts = $wpdb->get_results( "SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'draft' AND post_author = 5"); foreach ( $fivesdrafts as $fivesdraft ) { echo $fivesdraft->post_title; }
#2 Виведемо на екран посилання на чернетку автора з ID = 5
<?php $fivesdrafts = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_status = 'draft' AND post_author = 5"); if($fivesdrafts): foreach( $fivesdrafts as $post ){ setup_postdata($post); ?> <h2><a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></h2> <?php } else : ?> <h2> Не знайдено</h2> <?php endif; ?>
#3 Приклад складного запиту з GROUP BY (відгуків у WooCommerce)
/** * Повертає результати рейтингу (відгуків у WooCommerce) згрупований за оцінками * * @param int $post_id ідентифікатор посту * * @return array масив об'єктів, де кожен об'єкт - згруповані дані за однією з оцінок */ function get_cnt_rating_reviews_one_product( $post_id ){ global $wpdb; return $wpdb->get_results( $wpdb->prepare( " SELECT COUNT(meta.meta_id) як num, meta.meta_value FROM $wpdb->comments as comments INNER JOIN $wpdb->commentmeta як meta ON comments.comment_ID = meta.comment_id WHERE comments.comment_post_ID = %d AND meta_key = 'rating' GROUP BY meta.meta_value; ", $post_id ))); } // Використання get_cnt_rating_reviews_one_product(4350);
insert — вставка нового запису (рядка) до таблиці
Вставляє рядок (зазначені дані) у вказану таблицю.
Метод очищає передані дані та захищає від SQL ін’єкцій, тому дані можуть бути “брудні” (неочищені), наприклад: $_GET['foo']
.
Після додавання даних створене значення AUTO_INCREMENT можна отримати у змінній: $wpdb->insert_id
.
Повертає
int|false
.
число
– Число вставлених рядків.false
– Якщо дані не були вставлені в таблицю.
УВАГА! Поверне false (без будь-яких помилок), коли рядок (значення комірки), що передається для вставки, довше максимально можливого. Наприклад, колонка varchar(10) (довжина значення 10 символів), а в переданих даних для вставки вказаний рядок з 11 або більше символами.
Впіймати такий баг дуже складно! Тому треба мати це на увазі, коли все начебто має працювати (правильні дані передається), але wpdb::insert() повертає false без будь-яких помилок.
Така проблема стосується майже всіх методів, це:
wpdb::replace()
wpdb::insert()
wpdb::update()
wpdb::delete()
Використання
global $wpdb; $wpdb->insert($table, $data, $format);
-
$table
(рядок) (обов’язковий) - Назва таблиці в яку вставлятимемо дані.
-
$data
(масив) Дані, які потрібно вставити. Кожен елемент масиву має такий вигляд:
[ 'колонка таблицы' => 'значение' ]
.Якщо вказати в значенні NULL , то значення буде встановлено NULL , вказаний формат при цьому ігнорується.
Дані, що передаються, НЕ повинні бути очищені: esc_sql() .
-
$format
(масив/рядок) Масив форматів даних, які будуть асоційовані із зазначеними значеннями у параметрі $data . Якщо зазначений рядок, то він (формат) буде асоційований з усіма даними. При вказівці формату WordPress переводить передані дані в зазначений формат перед тим, як зберегти дані. Можливі формати:
%s
– Рядок%d
– ціле число%f
– дробове число
Якщо не вказати, то для всіх значень $data буде вказано формат
строка
, якщо інше не зазначено у властивості wpdb::$field_types .
Типово: null
Приклади
#1 Вставимо рядок у таблицю БД
// Вставка рядка із зазначенням значень для двох полів (значення для інших полів будуть дефолтні) $wpdb->insert( 'table', [ 'column' => 'foo', 'field' => 'bar' ] ); // із зазначенням типів даних $wpdb->insert( 'table', [ 'column' => 'foo', 'field' => 1337 ], [ '%s', '%d' ] );
update — оновлення запису (рядка) у таблиці
Оновлює вказані дані у вказаному рядку таблиці.
Метод включає захист від SQL ін’єкцій та дані можна передавати як є, наприклад: $_GET['foo']
.
Читайте також: Масив для значень поля в $where параметрі $wpdb->update .
НЕ вставляє дані, якщо їх немає в БД – тільки оновлює існуючі дані.
Повертає
int|false
.
число
– скільки рядків було опрацьовано0
– запит було виконано коректно, але жодний рядок не було опрацьовано. Якщо в БД вже є дані і ви намагаєтеся оновити, вказавши такі самі дані, то wpdb::update() поверне 0.false
– Запит провалився або помилка запиту.
Так як повертається 0, якщо ніякі поля не були оновлені (змінені), але запит був виконаний коректно, перевірку результату запиту на помилку потрібно робити з урахуванням типу даних, що повертаються $res === false
.
Використання
global $wpdb; $wpdb->update( $table, $data, $where, $format, $where_format );
-
$table
(рядок) (обов’язковий) - Назва таблиці, дані у якій потрібно оновити.
-
$data
(масив) (обов’язковий) Дані, які потрібно оновити у форматі
[ 'название колонки' => 'новое значение' ]
.Якщо в значенні вказати NULL , то значення буде встановлено в NULL , відповідний формат при цьому ігнорується.
-
$where
(масив) (обов’язковий) -
Асоційований масив з умовою вибірки рядків таблиці, дані в яких потрібно оновити (SQL WHERE). Формат масиву:
[ 'название колонки' => 'чему равно' ]
. Якщо зазначити кілька елементів у масиві, то зазначені умови будуть об’єднані через
AND
– тобто. повинні будуть збігтися всі умови, а не якесь одне. Якщо в значенні вказати
NULL
, то в запиті отримаємо порівняння
IS NULL
, відповідний формат при цьому ігнорується. -
$format
(масив/рядок) Масив форматів даних, які будуть асоційовані із зазначеними значеннями у параметрі $data . Якщо зазначений рядок, то він (формат) буде асоційований з усіма даними. При вказівці формату WordPress переводить передані дані у вказаний формат перед створенням запиту. Можливі формати:
%s
– Рядок%d
– ціле число%f
– дробове число
Якщо не вказати, то для всіх значень $data буде вказано формат
строка
, якщо інше не зазначено у властивості wpdb::$field_types .
Типово: null-
$where_format
(масив/рядок) -
Теж саме
$format , тільки для
$where даних.
Типово: null
Приклади
#1 Оновимо рядок ID якого дорівнює 1
Значення першої колонки рядок, значення другої колонки число:
$wpdb->update( 'table', [ 'column1' => 'value1', 'column2' => $_GET['val'] ], [ 'ID' => 1 ] );
#2 Теж саме із зазначенням типів переданих даних
$wpdb->update( 'table', [ 'column1' => 'value1', 'column2' => $_GET['val'] ], [ 'ID' => 1 ], [ '%s', '%d' ], [ '%d' ] );
#3 Demo
$wpdb->update( 'table', [ 'column' => 'foo', 'field' => 'bar' ], [ 'ID' => 1 ] ); $wpdb->update( 'table', [ 'column' => 'foo', 'field' => 1337 ], [ 'ID' => 1 ], [ '%s', '%d' ), [ '% d']]);
replace — заміна рядка
Оновлює або створює рядок у таблиці.
Якщо рядок із вказаним ключем PRIMARY KEY вже є всі інші вказані поля будуть оновлені у рядку. Якщо такого рядка в таблиці ще немає, функція вставить (insert) новий рядок.
Після вставки, ID створений для колонки AUTO_INCREMENT можна отримати як $wpdb->insert_id .
Метод включає захист від ін’єкцій SQL. Тобто. можна передавати неочищені дані, наприклад, із параметрів запиту: $_GET['foo']
.
Для вставлення нового рядка необов’язково вказувати поле з автоінкрементом. Наприклад, ми маємо таблицю з полем id
(AUTO_INCREMENT). Можна вказати значення всіх полів, крім id, і рядок буде додано до таблиці.
PRIMARY KEY може складатися з кількох ключів. У цьому випадку при пошуку для заміни існуючого рядка завжди будуть використовуватися всі колонки, зазначені в PRIMARY KEY. Всі інші поля, крім полів з PRIMARY KEY, не беруть участі в пошуку існуючих рядків.
Наприклад, PRIMARY KEY і двох колонок ID і type : PRIMARY KEY (ID,type)
. Тоді для заміни існуючого рядка у параметрі $data потрібно вказати значення цих двох колонок. Якщо наприклад вказати ID і не вказати type, то існуючий рядок не буде знайдено і буде створено новий рядок із зазначеним ID та дефолтним значенням type.
Якщо довжина рядка у параметрі $data більша, ніж допускається в комірці таблиці MySQL, вставка провалиться і функція поверне false. При цьому у властивості $wpdb->last_error повідомлення про помилку НЕ буде записано! Втім це стосується й інших методів wpdb .
Тому дуже важливо переконатися, що дані, що вставляють, підходять під розмір осередків (колонок). Інакше просто нічого не станеться і ви не побачите жодних помилок чи попереджень.
Завжди замінюються усі поля таблиці. Наприклад, якщо таблиця має поля primary, one, two, three
, а ми вказали в параметрі $data тільки primary, one
, то поля two
й three
отримають дефолтні значення, навіть якщо там вже були дані.
Може відбутися заміна відразу кількох наявних рядків – це коли дані, що замінюються, збігаються з існуючими, а унікальний індекс у наявних рядків різний.
Повертає
int|false
. Число (кількість оброблених рядків), 0 чи false.
число
– скільки рядків було оброблено (видалено чи вставлено). Якщо була заміна (оновлення), то для кожного оновленого рядка повернеться +2 (видалення та вставка). Якщо була просто вставка, то для кожного вставленого рядка повернеться +1.0
– запит було виконано коректно, але жодний рядок не було опрацьовано.false
– Запит провалився – помилка запиту. Або коли неможливо замінити або створити новий рядок у таблиці.
Поверне кількість порушених рядків – це сума вставлених та віддалених рядків. Якщо повернулося 1 при заміні одного рядка – це означає, що один рядок була вставлена і жодна не була видалена. Якщо число більше 1 – це означає, що один або більше рядків були видалені перед вставкою нового рядка.
Використання
global $wpdb; $wpdb->replace( $table, $data, $format );
-
$table
(рядок) (обов’язковий) - Назва таблиці, де потрібно замінити дані.
-
$data
(масив) (обов’язковий) Дані, які потрібно замінити/вставити у форматі
[ 'название колонки' => 'новое значение' ]
.Якщо в значенні вказати NULL , то значення буде встановлено в NULL , відповідний формат при цьому ігнорується.
-
$format
(масив/рядок) Масив форматів даних, які будуть асоційовані із зазначеними значеннями у параметрі $data . Якщо зазначений рядок, то він (формат) буде асоційований з усіма даними. При вказівці формату WordPress переводить передані дані у вказаний формат перед створенням запиту. Можливі формати:
%s
– Рядок%d
– ціле число%f
– дробове число
Якщо не вказати, то для всіх значень $data буде вказано формат
строка
, якщо інше не зазначено у властивості wpdb::$field_types .
Типово: null
Приклади
#1 Замінимо рядок із головним ключем ID = 1
(мається на увазі, що таблиця складається з трьох колонок ID, column1, column2
).
Рядок буде додано, якщо його немає або повністю оновлено, якщо воно є. Тут важливо вказувати значення для всіх полів, тому що поля без значень отримають дефолтні, навіть якщо в них були дані.
$wpdb->replace( 'table_name', [ 'ID' => 1, 'column1' => 'value1', 'column2' => 123 ]);
#2 Вкажемо формати
$wpdb->replace( 'table', [ 'column' => 'foo', 'field' => 1337 ], [ '%s', '%d' ) );
delete — видалення рядка з таблиці
Видаляє рядки з таблиці за умовою, зазначеною у параметрі $where .
Включає захист від SQL ін’єкцій, це означає, що можна передавати неочищені дані, наприклад: $_GET['foo']
…
Повертає
int|false
. Число видалених рядків або 0, якщо нічого не видалено. false повертається за помилки запиту.
Використання
global $wpdb; $wpdb->delete( $table, $where, $where_format );
-
$table
(рядок) (обов’язковий) - Назва таблиці.
-
$where
(масив) (обов’язковий) -
Масив умов, за якими вибиратимуться рядки для видалення у форматі
[ 'название колонки' => 'чему равно' ]
. Декілька умов будуть об’їдені через
AND
. Якщо в значенні вказати
NULL
, то в запиті отримаємо порівняння
IS NULL
, відповідний формат при цьому ігнорується. -
$where_format
(масив/рядок) Масив форматів даних, які будуть асоційовані із зазначеними значеннями у параметрі $where . Якщо зазначений рядок, то він (формат) буде асоційований з усіма даними. При вказівці формату WordPress переводить передані дані у вказаний формат перед створенням запиту. Можливі формати:
%s
– Рядок%d
– ціле число%f
– дробове число
Якщо не вказати, то для всіх значень $data буде вказано формат
строка
, якщо інше не зазначено у властивості wpdb::$field_types .
Типово: null
Приклади
#1 Приклад видалення даних із БД
// Видалимо рядок із полем ID=1 з таблиці table $wpdb->delete( 'table', [ 'ID' => 1 ] ); // Вкажемо формат значення $where $wpdb->delete( 'table', [ 'ID'=>'1' ], [ '%d' ] ); // 1 буде оброблено як число (% d).
prepare – захист запиту від ін’єкцій SQL
Дозволяє писати SQL запит з очищенням параметрів, що передаються в нього.
У рядку запиту замість параметра, що передається, потрібно використовувати плейсхолдер:
%d
(integer)%f
(float)%s
(string)
Також для кожного з плейсхолдерів вказується PHP змінна, яка замінить плейсхолдер. При заміні змінна буде очищена . Синтаксис схожий на sprintf() .
З WP 3.5 обов’язково повинні бути передані щонайменше 2 параметри: запит і значення змінної, інакше буде php помилка (User Notice).
-
Лапки для плейсхолдерів
%s
та'%s'
. Плейсхолдери можуть бути в лапках або без них:
WHERE field = %s
абоWHERE field = '%s'
. Лапки прийнято не ставити.echo $wpdb->prepare( "foo = %s", 'a'); // foo = 'a' echo $wpdb->prepare( "foo = '%s'", 'a' ); // foo = 'a'
- Параметр кожного плейсхолдера.
Параметр має бути вказаний для кожного плейсхолдера.
echo $wpdb->prepare( 'foo = %s AND bar = %s', 'a' ); echo $wpdb->prepare( 'foo = %1$s AND bar = %1$s', 'a' ); // В обох випадках побачимо помилку: // User Notice: wpdb::prepare був названий incorrectly. // The query does no contain the correct number of placeholders (2) // for number of arguments passed (1).
-
Порядкові плейсхолдери
%1$s
. Для сумісності зі старими версіями: порядкові плейсхолдери (наприклад,
%1$s
,%5s
) обробляються інакше – їм не додаються лапки, тому вони мають бути забезпечені правильними лапками у рядку запиту.echo $wpdb->prepare( 'foo = %1$s', 'a"a' ); // foo = a"a echo $wpdb->prepare( 'foo = "%1$s"', 'a"a' ); // foo = "a"a" echo $wpdb->prepare( 'foo = %1s', 'a"a' ); // foo = a"a echo $wpdb->prepare( 'foo = %s', 'a"a' ); // foo = 'a"a'
-
Знак
%
Знак
%
у рядку запиту, який не відноситься до плейсхолдеру, потрібно записувати так%%
.echo $wpdb->prepare( "%foo AND id = %d", 2 ); // User Notice: wpdb::prepare був названий incorrectly. echo $wpdb->prepare( "%%foo AND id = %d", 2 ); // %foo AND id = 2
-
%
у LIKE синтаксисі Підстановочні знаки відсотка
%
в LIKE синтаксисі повинні вказуватися через параметр підстановки, що містить повний LIKE рядок, а не безпосередньо у запиті. Також дивіться wpdb::esc_like() .$like = '%'. $wpdb->esc_like( "bar's" ) .'%end'; echo $wpdb->prepare( "foo LIKE %s", $like ); // foo LIKE '{a0d1d}bar's{a0d1d}end'
SQL ін’єкція
У SQL є таке поняття як ін’єкція (впровадження в запит SQL коду). Зробити його можна, коли на запит передаються динамічні дані. Наприклад, у запит передається значення input поля, це поле можна вказати дані, які у результаті стануть частиною SQL запиту. Так можна запропонувати запит і щось зіпсувати або просто порушити код самого запиту. Виглядає це так:
$sql = "SELECT * FROM table WHERE id = '$var'";
Тепер, якщо var = 2' AND id = (DROP TABLE table2)
то в результаті запит вийти такий:
SELECT * FROM table WHERE id = '2' AND id = (DROP TABLE table2)
Таким чином, можна впровадитися в сам запит і змінити його. Щоб цього не відбулося запити з перемінними, що передаються в них, потрібно обробляти методом prepare() :
$sql = $wpdb->prepare( "SELECT * FROM table WHERE id = %s", $var);
esc_sql()
Крім методу $wpdb->prepare(), запит можна очистити функцією esc_sql() . Але «prepare» краще, тому що виправляє деякі помилки форматування.
$name = esc_sql($name); $status = esc_sql($status); $wpdb->get_var( "SELECT something FROM table WHERE foo = '$name' and status = '$status'" );
ВАЖЛИВО! Після esc_sql() очищений рядок можна використовувати тільки всередині лапок ''
або ""
. Тобто. правильно писати field = '$value'
, а не field = $value
де$value = esc_sql( $value );
Повертає
Строку|null
. Sanitized query string, якщо це є query to prepare.
Використання
global $wpdb; $wpdb->prepare( $query, ...$args );
-
$query
(рядок) (обов’язковий) Рядок запиту. У ньому можна використовувати замінники:
%d
– Число%s
– Рядок%f
– Дробове число (число з плаваючою точкою, з версії 3.3).
-
…$args
(рядок/число/масив) Змінні, які будуть використані для заміни плейсхолдерів
%s %d %f
у рядку запиту.Ці змінні можна вказати через кому (як додаткові параметри функції) або в масиві:
$wpdb->prepare( 'query', $param1, $param2 )
$wpdb->prepare( 'query', [ $param1, $param2 ] )
.
Приклади
#1 Демонстрація роботи
$wpdb->prepare( "SELECT * FROM `table` WHERE `column` = %s AND `field` = %d OR `other_field` LIKE %s", [ 'foo', 1337, '% bar'] ); $wpdb->prepare( "SELECT DATE_FORMAT(`field`, '%%c') FROM `table` WHERE `column` = %s", 'foo' );
#2 Додамо довільне поле до поста 10
З прикладу видно, що з prepare() немає необхідності дбати про екранування лапок та інше, що може зашкодити запиту.
$metakey = " крах " БД " ; $metavalue = "WordPress може 'зламати' Базу Даних якщо не екранувати запит."; $wpdb->query( $wpdb->prepare( "INSERT INTO $wpdb->postmeta ( post_id, meta_key, meta_value ) VALUES ( %d, %s, %s )", 10, $metakey, $metavalue ) );
#3 Передача параметрів у вигляді масиву
Це такий самий приклад, тільки тут всі змінні передаються у другому параметрі як масиву.
Передавати параметри у вигляді масиву може бути корисно, коли ми заздалегідь не знаємо кількість аргументів, які потрібно буде передати.
$metakey = " крах " БД " ; $metavalue = "WordPress може 'зламати' Базу Даних якщо не екранувати запит."; $wpdb->query( $wpdb->prepare( "INSERT INTO $wpdb->postmeta ( post_id, meta_key, meta_value ) VALUES ( %d, %s, %s )", array( 10, $metakey, $metavalue ) ) );
esc_like — очищення LIKE рядка
Підготовка рядка для використання в LIKE частині SQL запиту. Обробляє спецсимволи %
та _
.
Ця функція не захищає від SQL ін’єкцій і тому її результат потрібно додатково обробити однією з функцій esc_sql() .
Ця функція використовується замість застарілої WP 4.0. функції like_escape( $string ) .
Повертає
Строку
. Текст для LIKE частини запиту. Результат не очищений для SQL запиту, тому використовуйте wpdb::prepare() або wpdb::_real_escape() для додавання результату до запиту.
Використання
global $wpdb; $wpdb->esc_like( $text );
-
$text
(рядок) (обов’язковий) - Необроблений текст, спец-символи в якому потрібно екранувати для рядка LIKE. Рядок не повинен мати додаткових або віддалених слешів.
Приклади
#1 Приклад підготовки рядка для запиту LIKE
$wild = '%'; $find = 'тільки 43% of planets'; $like = $wild. $wpdb->esc_like( $find ) . $ wild; $sql = $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE post_content LIKE %s", $like ); echo $sql; // SELECT * FROM wp_posts WHERE post_content LIKE '{d710cab}only 43{d710cab} of planets{d710cab}'
#2 Приклад з esc_sql()
$esc_like = $wpdb->esc_like( 'тільки 43% of planets' ); echo $esc_like; // Тільки 43% від planets echo esc_sql($ esc_like); // Тільки 43 {f5fa52} of planets
#3 Ще приклад підготовки рядка для LIKE запиту
global $wpdb; $link = $wpdb->esc_like($link); // підготуємо рядок для LIKE аргументу $link = esc_sql($link); // Очистимо змінну $link = '%'. $link. '%'; // створимо повну змінну пошуку LIKE // знайдемо коментарі в тексті або засланні автора, є вказане посилання $spammy = $wpdb->query("SELECT comment_approved FROM $wpdb->comments WHERE (comment_content LIKE '$link' OR comment_author_url LIKE '$link') AND comment_approved = 'spam' LIMIT 1; );
#4 Короткий запис з prepare()
global $wpdb; $link = '%'. $wpdb->esc_like( $link ) . '%'; $comment = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_author_url LIKE %s LIMIT 1", $link )));
show/hide/print_error — показати або сховати помилки SQL
Є можливість керувати помилками, включати чи вимикати показ помилок для останнього запиту:
$wpdb->show_errors(); // увімкне показ помилок $wpdb->hide_errors(); // вимкне показ помилок $wpdb->print_error(); // увімкне показ помилок на екран
get_col_info — отримати інформацію про колонку
Отримує масив з інформацією про колонки останнього запиту.
Якщо у запиті колонки не визначено, функція поверне інформацію про всі колонки таблиці. Це може стати в нагоді, коли було повернуто об’єкт, про дані якого ми нічого не знаємо.
Працює на основі кешу, тому спочатку потрібно зробити запит, використовуючи get_var() і т.д. а потім викликати цю функцію – вона поверне дані колонок останнього запиту.
Повертає
Разное
. Дані стовпчиків.
Використання
global $wpdb; $wpdb->get_col_info( $info_type, $col_offset );
-
$info_type
(рядок) Вказує, яку інформацію нам потрібно отримати. Список можливих значень:
name
– Назва колонки.table
– Назву таблиці до якої належить колонка.max_length
– Максимальна довжина даних колонки.not_null
– 1 якщо комірка колонки не може набувати значення NULL.primary_key
– 1 якщо колонка є первинним ключем.unique_key
– 1 якщо комірки колонки повинні бути завжди унікальними.multiple_key
– 1 якщо осередки колонки можуть бути не унікальні.numeric
– 1 якщо колонка містить числові дані.blob
– 1, якщо колонка містить дані типу BLOB (двійкові дані).type
– Тип колонки.unsigned
– 1 якщо колонка має тип даних UNSIGNED .zerofill
– 1 якщо колонка має тип даних ZEROFILL .
Типово: name
-
$col_offset
(число) Вказівник, інформацію про яку колонку потрібно отримати:
-1
— буде отримано інформацію про всі колонки у вигляді масиву. За замовчуванням.0
,1
,2
,...
— буде повернуто інформацію про вказану колонку, де 0 – перша колонка, 1 – друга і т.д.
За замовчуванням: -1
Приклади
#1 Демонстрація роботи
Зробимо запит:
global $wpdb; $results = $wpdb->get_results( "SELECT * FROM $wpdb->postmeta");
Тепер отримаємо дані про колонки таблиці цього запиту:
$cols_data = $wpdb->get_col_info( 'name' ); /* Array ( [0] => meta_id [1] => post_id [2] => meta_key [3] => meta_value ) */ $cols_data = $wpdb->get_col_info( 'max_length'); /* Array ( [0] => 6 [1] => 5 [2] => 45 [3] => 20205 ) */ $cols_data = $wpdb->get_col_info( 'type' ); /* Array ( [0] => 8 [1] => 8 [2] => 253 [3] => 252 ) */
Що буде, якщо вказати неіснуюче ім’я колонки:
$cols_data = $wpdb->get_col_info( 'primary_key' ); /* Notice: Undefined property: stdClass::$primary_key in /wpexample.com/public_html/wp-includes/wp-db.php on line 3435 Notice: Undefined property: stdClass::$primary_key in /wpexample.com/public_html/wp-includes/wp-db.php on line 3435 Notice: Undefined property: stdClass::$primary_key in /wpexample.com/public_html/wp-includes/wp-db.php on line 3435 Notice: Undefined property: stdClass::$primary_key in /wpexample.com/public_html/wp-includes/wp-db.php on line 3435 Array ( [0] => [1] => [2] => [3] => ) */
Щоб отримати дані окремої колонки, потрібно вказати її індекс у другому параметрі:
echo $wpdb->get_col_info( 'name', 0 ); //> meta_id echo $wpdb->get_col_info( 'name', 1 ); //> post_id echo $wpdb->get_col_info( 'max_length', 0 ); //> 6 echo $wpdb->get_col_info( 'max_length', 1); //> 5
flush – скидання кешу
Можна скинути останні збережені дані у властивості класу:
$wpdb->flush();
Ця команда очистить наступні властивості (змінні): $wpdb->last_result , $wpdb->last_query та $wpdb->col_info .
Властивості (змінні) класу
- $show_errors
-
Показувати помилки чи ні, коли результат повертається.
Типово: true (так) - $suppress_errors
- Чи пригнічувати помилки у процесі побудови запиту.
- $last_error
- Остання помилка будь-якого запиту.
- $num_queries
- Кількість запитів, що виконуються.
- $num_rows
- Кількість рядків, повернутих останнім запитом.
- $rows_affected
- Зберігає кількість задіяних рядків із останнього запиту. Заповнюється при наступних sql командах: create, alter, truncate, drop, insert, delete, update, replace – інших випадках заповнюється властивість $num_rows.
- $insert_id
- Ідентифікатор (ID) згенерований останнім запитом для SQL параметра AUTO_INCREMENT
- $last_query
- Останній запит, виконаний класом.
- $last_result
- Результат останнього запиту.
- $func_call
- Текстовий опис останнього виклику query/get_row/get_var
- $queries
-
Можна зберегти всі запити, які були зроблені до БД та їх час виконання, для цього потрібно визначити константу
SAVEQUERIES як TRUE (наприклад, config.php). За замовчуванням її вимкнено (false). Після того, як ця константа включена в цю змінну, будуть збиратися всі запити у вигляді масиву даних. - $col_info
- Інформація про колонки останнього запиту.
- $prefix
- Префікс таблиць БД визначений WordPress. Може стати в нагоді для мульти-сайтів.
- $base_prefix
- Префікс базової таблиці WordPress У мультисайті для сайтів мережі префік відрізняється. Тут зберігається префікс таблиць основного веб-сайту мережі.
- $ready
- Логічний. Чи готовий клас до виконання запитів.
- $blogid
- Ідентифікатор поточного блоґу.
- $siteid
- ID сайту.
- $tables
Список назв таблиць, які використовуються (копіюються) для кожного підсайту мережі сайтів. Назва таблиць відрізнятиметься префіксом поточного блогу. Назви без префіксу за замовчуванням:
var $tables = array( 'posts', 'comments', 'links', 'options', 'postmeta', 'terms', 'term_taxonomy', 'term_relationships', 'termmeta', 'commentmeta', );
- $global_tables
Глобальні таблиці. Чи не повторюються для підсайтів.
array( 'users', 'usermeta' );
- $ms_global_tables
Глобальні таблиці як MU.
var $ms_global_tables = array( 'blogs', 'blogmeta', 'signups', 'site', 'sitetema', 'sitecategories', 'registration_log', );
- $collate
- Режим зіставлення (порівняння) даних у колонках бази даних.
- $dbh
- PHP об’єкт бази mysqli.
Таблиці Бази даних WordPress
Записи – докладніше тут
- $wpdb->posts
- Таблиця, куди записуються пости, постійні сторінки, довільні типи записів, вкладення тощо.
- $wpdb->postmeta
-
Доповнює таблицю
$wpdb->posts
. Зберігає додаткові дані записів (постів) їх називають метаполя.
Користувачі
- $wpdb->users
- Таблиця із даними про зареєстрованих користувачів.
- $wpdb->usermeta
-
Додаткова інформація про користувачів, така як Ім’я, Нік, права та інше.
Мета поля для таблиці
$wpdb->users .
Коментарі
- $wpdb->comments
- Таблиця із записами коментарів.
- $wpdb->commentmeta
-
Мета поля для таблиці
$wpdb->comments .
Таксономії — докладніше
- $wpdb->terms
- Таблиця містить у собі базову інформацію кожному елементі таксономії.
- $wpdb->termmeta
-
Таблиця містить у собі додаткові поля для таблиці
$wpdb->terms . - $wpdb->term_taxonomy
- Таблиця з інформацією про таксономії, їх опис.
- $wpdb->term_relationships
- Таблиця, що зв’язує таксономії з контентом (постами, записами тощо)
Інші таблиці
- $wpdb->links
- Таблиця із записами посилань.
- $wpdb->options
- Таблиця опцій (налаштувань).
Таблиці Multisite складання
- $wpdb->blogs
- Усі сайти підмережі.
- $wpdb->blog_versions
- Містить поточну версію бази даних кожного сайту. Дані оновлюються під час оновлення БД для кожного сайту мережі.
- $wpdb->registration_log
- Містить дані адміністраторів сайтів, які створюються під час створення сайтів.
- $wpdb->signups
-
Містить користувачів, зареєстрованих через базову реєстрацію WordPress зі сторінки:
Администрация > Супер Админ > Настройки
. - $wpdb->site
- Містить адреси основних сайтів.
- $wpdb->sitemeta
- Дані сайтів: різні опції, включаючи адміністратора сайту.
- $wpdb->users
-
Список користувачів усіх веб-сайтів мережі. Це загальна таблиця користувачів для всієї мережі. Це звична таблиця, тільки мультисайт версії додаються ще 2 поля:
spam і
delete . - $wpdb->usermeta
- Містить мета-дані користувачів. Установки користувача для різних веб-сайтів мережі.
- Базові таблиці кожного сайту мережі
-
Таблиці сайту мережі:
wp_posts ,
wp_options і т.д.. Для кожного сайту мережі створюються однакові таблиці, але з різним префіксом, наприклад:
wp_options ,
wp_1_options ,
wp_2_options …
Усі методи класу
- public __construct( $dbuser, $dbpassword, $dbname, $dbhost )
- public __get($name)
- public __isset($name)
- public __set( $name, $value )
- public __unset( $name )
- private _do_query( $query )
- public _escape( $data )
- public _real_escape( $string )
- public _weak_escape( $string )
- public add_placeholder_escape( $query )
- public bail( $message, $error_code = ‘500’ )
- protected check_ascii( $string )
- public check_connection( $allow_bail = true )
- public check_database_version()
- protected check_safe_collation( $query )
- public close()
- public db_connect( $allow_bail = true )
- public db_server_info()
- public db_version()
- public determine_charset( $charset, $collate )
- public escape( $data )
- public escape_by_ref( &$string )
- public flush()
- public get_blog_prefix( $blog_id = null )
- public get_caller()
- public get_charset_collate()
- public get_col( $query = null, $x = 0 )
- public get_col_charset( $table, $column )
- public get_col_info( $info_type = ‘name’, $col_offset = -1 )
- public get_col_length( $table, $column )
- public get_row( $query = null, $output = OBJECT, $y = 0 )
- protected get_table_charset( $table )
- protected get_table_from_query( $query )
- public get_var ($ query = null, $ x = 0, $ y = 0)
- public has_cap( $db_cap )
- public hide_errors()
- public load_col_info()
- public log_query( $query, $query_time, $query_callstack, $query_start, $query_data )
- public parse_db_host( $host )
- public placeholder_escape()
- public print_error( $str = ” )
- protected process_field_charsets( $data, $table )
- protected process_field_formats( $data, $format )
- protected process_field_lengths( $data, $table )
- protected process_fields( $table, $data, $format )
- public query($query)
- public remove_placeholder_escape( $query )
- public select( $db, $dbh = null )
- public set_blog_id( $blog_id, $network_id = 0 )
- public set_charset( $dbh, $charset = null, $collate = null )
- public set_prefix( $prefix, $set_table_names = true )
- public set_sql_mode( $modes = array() )
- public show_errors( $show = true )
- protected strip_invalid_text( $data )
- public strip_invalid_text_for_column( $table, $column, $value )
- protected strip_invalid_text_from_query( $query )
- public supports_collation()
- public suppress_errors( $suppress = true )
- public tables( $scope = ‘all’, $prefix = true, $blog_id = 0 )
- public timer_start()
- public timer_stop()
- public
Багато швидких та якісних передплатників на свій канал у Телеграмі можна придбати на сервісі https://doctorsmm.com/ . Тут, при покупці ресурсу, Ви зможете підібрати для себе найбільш прийнятний формат аудиторії та швидкісний режим, в якому передплатники надходитимуть до Вас у співтовариство за більш ніж приємні ціни. Тепер розвиватися у Телеграмі стало ще простіше, швидше та дешевше!