wpdb::get_results() publicWP 0.71

Отримує всі дані вказаного запиту (всі рядки та колонки). Результат повертається як масиву. Кожен елемент масиву – це об’єкт з даними окремого рядка таблиці.

{} Це метод класу: wpdb{}

Хуків немає.

Повертає

Массив|Объект|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

Приклади

0

#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;
}
0

#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; ?>
0

#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);

список змін

З версії 0.71Введено.

wpdb::get results WP 6.0.2

public function get_results( $query = null, $output = OBJECT ) {
	$this->func_call = "$db->get_results("$query", $output)";

	if ( $query ) {
		if ( $this->check_current_query && $this->check_safe_collation( $query ) ) {
			$this->check_current_query = false;
		}

		$this->query( $query );
	} else {
		return null;
	}

	$new_array = array();
	if ( OBJECT === $output ) {
		// Return an integer-keyed array of row objects.
		return $this->last_result;
	} elseif ( OBJECT_K === $output ) {
		// Return array of row objects with keys from column 1.
		// (Duplicates are discarded.)
		if ( $this->last_result ) {
			foreach ( $this->last_result as $row ) {
				$var_by_ref = get_object_vars($row);
				$key = array_shift( $var_by_ref );
				if ( ! isset( $new_array[ $key ] ) ) {
					$new_array[ $key ] = $row;
				}
			}
		}
		return $new_array;
	} elseif ( ARRAY_A === $output || ARRAY_N === $output ) {
		// Return an integer-keyed array of...
		if ( $this->last_result ) {
			foreach ((array) $this->last_result as $row ) {
				if ( ARRAY_N === $output ) {
					// ... integer-keyed row arrays.
					$new_array[] = array_values( get_object_vars( $row ) );
				} else {
					// ...column name-keyed row arrays.
					$new_array[] = get_object_vars($row);
				}
			}
		}
		return $new_array;
	} elseif ( strtoupper ( $output ) === OBJECT ) {
		// Back compat for OBJECT being previously case-insensitive.
		return $this->last_result;
	}
	return null;
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *