wpdb::get_results( string $query = null, string $output = OBJECT )

Retrieve an entire SQL result set from the database (i.e., many rows)


Description Description

Executes a SQL query and returns the entire SQL result.


Top ↑

Parameters Parameters

$query

(string) (Optional) SQL query.

Default value: null

$output

(string) (Optional) Any of ARRAY_A | ARRAY_N | OBJECT | OBJECT_K constants. With one of the first three, return an array of rows indexed from 0 by SQL result row number. Each row is an associative array (column => value, ...), a numerically indexed array (0 => value, ...), or an object. ( ->column = value ), respectively. With OBJECT_K, return an associative array of row objects keyed by the value of each row's first column's value. Duplicate keys are discarded.

Default value: OBJECT


Top ↑

Return Return

(array|object|null) Database query results


Top ↑

Source Source

File: wp-includes/wp-db.php

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

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

		if ( $query ) {
			$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 an 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;
	}


Top ↑

Changelog Changelog

Changelog
Version Description
0.71 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 1 content
    Contributed by fabianplaza

    Example about how can you retrieve data from a table using get_results function:

    public function some_function($some_parameter) {
            global $wpdb;
            $results = $wpdb->get_results( 
                        $wpdb->prepare("SELECT count(ID) as total FROM {$wpdb->prefix}your_table_without_prefix WHERE some_field_in_your_table=%d", $some_parameter) 
                     );
    }
    

    Please, note that I have used %d assuming that $some_parameter is a int value.

  2. Skip to note 2 content
    Contributed by Eduard Milushi

    The example below is using heredoc to write the query and then getting the result through $wpdb->get_result(). The second parameter ARRAY_A used on the function will tell to the function that we need the result to be an Array.

    $query = <<<SQL
    SELECT
           p.ID, m.meta_key, m.meta_value
    FROM
         $wpdb->posts p
         LEFT JOIN
         $wpdb->postmeta m ON p.ID = m.post_id
         WHERE
               p.post_type IN ( 'post', 'page' )
               AND p.post_status = 'publish'
               AND ( m.meta_key IN ( '_yoast_wpseo_title', '_yoast_wpseo_metadesc', '_yoast_wpseo_meta-robots-noindex', 
               '_yoast_wpseo_meta-robots-nofollow' )
               OR 1 = 1 )
    SQL;
            
    /** @var array $result this will give us the ID and the other meta_field if any of all post types selected */
    $result = $wpdb->get_results( $query, ARRAY_A );

You must log in before being able to contribute a note or feedback.