WPDB::GET_RESULTS() — Получение Результатов из Базы Данных в WordPress
Функция WPDB::get_results()
позволяет получить набор результатов SQL-запроса из базы данных. Это может быть полезно, если вам нужно получить несколько строк данных.
Что Это Делает
Эта функция выполняет SQL-запрос и возвращает весь результат в виде массива или объекта.
Возвращаемые Значения
Функция возвращает:
- Массив или Объект или null — в зависимости от результата SQL-запроса.
Как Это Использовать
Чтобы использовать get_results()
, нужно сначала объявить глобальную переменную $wpdb
, которая содержит методы для взаимодействия с базой данных.
Синтаксис
global $wpdb;
$wpdb->get_results( $query, $output );
- $query (строка): ваш SQL-запрос.
- $output (строка): тип возвращаемого результата. По умолчанию —
OBJECT
. Возможные значения:ARRAY_A
: возвращает ассоциативный массив (ключи — названия колонок).ARRAY_N
: возвращает численно индексированный массив.OBJECT
: возвращает объекты с атрибутами, соот��етствующими названиям колонок.OBJECT_K
: возвращает ассоциативный массив объектов, где ключ — значение первой колонки.
Примеры
Пример 1: Получение ID и Заголовков Черновиков
Этот код получает 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: Сложный Запрос с Группировкой
Функция получает рейтинг (отзывы в WooCommerce), сгруппированные по оценкам.
function get_cnt_rating_reviews_one_product( $post_id ){
global $wpdb;
return $wpdb->get_results( $wpdb->prepare(
"
SELECT COUNT(meta.meta_id) as num, meta.meta_value
FROM $wpdb->comments as comments
INNER JOIN $wpdb->commentmeta as 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 );
Пример 3: Вывод Ссылок на Черновики Автора с ID = 5
Этот код отображает ссылки на черновики автора.
$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);
?>
Не найдено
Пример 4: Обработка Ошибок
Так можно перехватить ошибки из get_results()
:
global $wpdb;
$result = $wpdb->get_results( "SELECT * FROM invalid query" );
if ( $wpdb->last_error ) {
echo 'Ошибка WPDB: ' . $wpdb->last_error;
}
Заключение
Функция get_results()
из класса WPDB
позволяет вам эффективно получать данные из базы данных в WordPress. Помните о правильном использовании SQL-запросов для предотвращения ошибок и уязвимостей в вашем коде.