# WPDB::QUERY() — Запрос к базе данных в WordPress
Метод WPDB::QUERY() выполняет запрос к базе данных MySQL, используя текущее соединение с базой данных. Это важный инструмент для разработчиков, которые работают с данными в WordPress.
## Информация о методе
- **Где используется:**
- wpdb::get_row()
- wpdb::delete()
- wpdb::update()
## Возвращаемые значения
Этот метод возвращает:
- int, true или false.
- Значение true для запросов CREATE, ALTER, TRUNCATE и DROP.
- Количество затронутых или выбранных строк для всех других запросов.
- false в случае ошибки.
## Использование
Для использования данного метода вам необходимо подключить глобальную переменную $wpdb, которая содержит информацию о соединении с базой данных:
```php
global $wpdb;
$wpdb->query( $query );
Параметры
- $query (string) - обязательно. Это сам SQL-запрос к базе данных.
Примеры использования
Пример 1: Удаление пользовательского поля
Удаляем польз��вательское поле 'gargle' и его значение для поста с ID 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
Изменяем ключ полей повторяющихся записей для 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%'
" );
Пример 5: Использование подготовленных запросов
Важно всегда использовать метод $wpdb->prepare() при создании собственного запроса. Это помогает избежать SQL-инъекций:
$wpdb->query( $wpdb->prepare(
"DELETE FROM $wpdb->postmeta WHERE post_id = %d AND meta_key = %s",
13, 'gargle'
) );
Пример 6: Примечание о возвращаемом значении
Обратите внимание, что из-за проверки внутри этой функции, если перед запросом есть символы, отличные от пробелов, это может привести к неожиданным результатам:
$rows_affected = $wpdb->query( "
этот комментарий может нарушить $return_val
UPDATE wp_postmeta SET meta_value = 'baz'
WHERE meta_key = 'foo' AND meta_value = 'bar'
" );
echo $rows_affected; // отобразит 0 (на самом деле $num_rows)
Заключение
Метод WPDB::QUERY() является мощным инструментом для взаимодействия с базой данных в WordPress. Он позволяет выполнять различные SQL-запросы, что делает его необходимым для разработчиков. Обратите внимание на использование подготовленных запросов для повышения безопасности.