WPDB::get_results() — Получение Результатов из Базы Данных в WordPress

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-запросов для предотвращения ошибок и уязвимостей в вашем коде.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *