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, 3 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?>