WordPress.org

Make WordPress Core

Ticket #12257: wp-db.php.get_result().diff

File wp-db.php.get_result().diff, 5.6 KB (added by andreasnrb, 9 years ago)

Prevs, diff applied, Removed return null from get results()

  • wp-db.php

     
    125125        var $last_query;
    126126
    127127        /**
    128          * Results of the last query made
     128         * MySQL result resource of the last query made
    129129         *
    130          * @since 1.0.0
     130         * @since 3.?.?
    131131         * @access private
    132          * @var array|null
     132         * @var resource|null
    133133         */
    134         var $last_result;
     134        var $mysql_last_result;
    135135
    136136        /**
    137137         * Saved info on the table column
     
    10151015         * @return void
    10161016         */
    10171017        function flush() {
    1018                 $this->last_result = array();
     1018                @mysql_free_result( $this->mysql_last_result );
    10191019                $this->col_info    = null;
    10201020                $this->last_query  = null;
    10211021        }
     
    10851085                if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES )
    10861086                        $this->timer_start();
    10871087
    1088                 $this->result = @mysql_query( $query, $this->dbh );
     1088                $this->mysql_last_result = @mysql_query( $query, $this->dbh );
    10891089                $this->num_queries++;
    10901090
    10911091                if ( defined( 'SAVEQUERIES' ) && SAVEQUERIES )
     
    11071107                        $return_val = $this->rows_affected;
    11081108                } else {
    11091109                        $i = 0;
    1110                         while ( $i < @mysql_num_fields( $this->result ) ) {
    1111                                 $this->col_info[$i] = @mysql_fetch_field( $this->result );
     1110                        while ( $i < @mysql_num_fields( $this->mysql_last_result ) ) {
     1111                                $this->col_info[$i] = @mysql_fetch_field( $this->mysql_last_result );
    11121112                                $i++;
    11131113                        }
    1114                         $num_rows = 0;
    1115                         while ( $row = @mysql_fetch_object( $this->result ) ) {
    1116                                 $this->last_result[$num_rows] = $row;
    1117                                 $num_rows++;
    1118                         }
    11191114
    1120                         @mysql_free_result( $this->result );
    1121 
    11221115                        // Log number of rows the query returned
    11231116                        // and return number of rows selected
    1124                         $this->num_rows = $num_rows;
    1125                         $return_val     = $num_rows;
     1117                        $this->num_rows = @mysql_num_rows( $this->mysql_last_result );
     1118                        $return_val     = $this->num_rows;
    11261119                }
    11271120
    11281121                return $return_val;
     
    12811274                if ( $query )
    12821275                        $this->query( $query );
    12831276
    1284                 // Extract var out of cached results based x,y vals
    1285                 if ( !empty( $this->last_result[$y] ) ) {
    1286                         $values = array_values( get_object_vars( $this->last_result[$y] ) );
     1277                // Extract var from result resource based x,y vals
     1278                if ( $this->num_rows > $y ) {
     1279                        @mysql_data_seek( $this->mysql_last_result, $y );
     1280                        $values = @mysql_fetch_row( $this->mysql_last_result );
    12871281                }
    12881282
    12891283                // If there is a value return it else return null
     
    13101304                else
    13111305                        return null;
    13121306
    1313                 if ( !isset( $this->last_result[$y] ) )
     1307                if ( $this->num_rows <= $y )
    13141308                        return null;
    13151309
     1310                @mysql_data_seek( $this->mysql_last_result, $y );
     1311
    13161312                if ( $output == OBJECT ) {
    1317                         return $this->last_result[$y] ? $this->last_result[$y] : null;
     1313                        return @mysql_fetch_object( $this->mysql_last_result );
    13181314                } elseif ( $output == ARRAY_A ) {
    1319                         return $this->last_result[$y] ? get_object_vars( $this->last_result[$y] ) : null;
     1315                        return @mysql_fetch_assoc( $this->mysql_last_result );
    13201316                } elseif ( $output == ARRAY_N ) {
    1321                         return $this->last_result[$y] ? array_values( get_object_vars( $this->last_result[$y] ) ) : null;
     1317                        return @mysql_fetch_row( $this->mysql_last_result );
    13221318                } else {
    13231319                        $this->print_error(/*WP_I18N_DB_GETROW_ERROR*/" \$db->get_row(string query, output type, int offset) -- Output type must be one of: OBJECT, ARRAY_A, ARRAY_N"/*/WP_I18N_DB_GETROW_ERROR*/);
    13241320                }
     
    13431339
    13441340                $new_array = array();
    13451341                // Extract the column values
    1346                 for ( $i = 0, $j = count( $this->last_result ); $i < $j; $i++ ) {
    1347                         $new_array[$i] = $this->get_var( null, $x, $i );
     1342                @mysql_data_seek( $this->mysql_last_result, 0 );
     1343                for ( $i = 0, $j = $this->num_rows; $i < $j; $i++ ) {
     1344                        $values = @mysql_fetch_row( $this->mysql_last_result );
     1345                        if ( isset( $values[$x] ) && $values[$x] !== '' )
     1346                                $new_array[$i] = $values[$x];
     1347                        else
     1348                                $new_array[$i] = null;                 
    13481349                }
    13491350                return $new_array;
    13501351        }
     
    13671368
    13681369                if ( $query )
    13691370                        $this->query( $query );
    1370                 else
    1371                         return null;
    13721371
    13731372                $new_array = array();
     1373                @mysql_data_seek( $this->mysql_last_result, 0 );
    13741374                if ( $output == OBJECT ) {
    13751375                        // Return an integer-keyed array of row objects
    1376                         return $this->last_result;
     1376                        for ( $i = 0, $j = $this->num_rows; $i < $j; $i++ ) {
     1377                                $new_array[] = @mysql_fetch_object( $this->mysql_last_result );
     1378                        }
     1379                        return $new_array;
    13771380                } elseif ( $output == OBJECT_K ) {
    13781381                        // Return an array of row objects with keys from column 1
    13791382                        // (Duplicates are discarded)
    1380                         foreach ( $this->last_result as $row ) {
     1383                        while ( $row = @mysql_fetch_object( $this->mysql_last_result ) ) {
    13811384                                $key = array_shift( $var_by_ref = get_object_vars( $row ) );
    13821385                                if ( ! isset( $new_array[ $key ] ) )
    13831386                                        $new_array[ $key ] = $row;
    13841387                        }
    13851388                        return $new_array;
    1386                 } elseif ( $output == ARRAY_A || $output == ARRAY_N ) {
    1387                         // Return an integer-keyed array of...
    1388                         if ( $this->last_result ) {
    1389                                 foreach( (array) $this->last_result as $row ) {
    1390                                         if ( $output == ARRAY_N ) {
    1391                                                 // ...integer-keyed row arrays
    1392                                                 $new_array[] = array_values( get_object_vars( $row ) );
    1393                                         } else {
    1394                                                 // ...column name-keyed row arrays
    1395                                                 $new_array[] = get_object_vars( $row );
    1396                                         }
    1397                                 }
     1389                } elseif ( $output == ARRAY_A ) {
     1390                        // Return an integer-keyed array of column name-keyed row arrays
     1391                        for ( $i = 0, $j = $this->num_rows; $i < $j; $i++ ) {
     1392                                $new_array[] = @mysql_fetch_assoc( $this->mysql_last_result );
    13981393                        }
    13991394                        return $new_array;
     1395                } elseif ( $output == ARRAY_N ) {
     1396                        // Return an integer-keyed array of integer-keyed row arrays
     1397                        for ( $i = 0, $j = $this->num_rows; $i < $j; $i++ ) {
     1398                                $new_array[] = @mysql_fetch_row( $this->mysql_last_result );
     1399                        }
     1400                        return $new_array;
    14001401                }
    14011402                return null;
    14021403        }
     
    15611562        }
    15621563}
    15631564
     1565}
    15641566?>