WordPress.org

Make WordPress Core

Ticket #10354: wp-db-escape-patch.diff

File wp-db-escape-patch.diff, 1.5 KB (added by sowsinsk, 6 years ago)

Patch to wpdb->escape function to handle arrays gracefully

  • wp-includes/wp-db.php

     
    460460        } 
    461461 
    462462        /** 
    463          * Escapes content for insertion into the database, for security 
     463         * Escapes content for insertion into the database, for security. If the 
     464         * first argument is an array, it will recursively call escape() on each 
     465         * key/pair value, and return the original array. 
    464466         * 
    465467         * @since 0.71 
    466468         * 
    467          * @param string $string 
    468          * @return string query safe string 
     469         * @param mixed $data 
     470         * @return string query safe string, or array of query safe values 
    469471         */ 
    470         function escape($string) { 
    471         if (is_object($string)) return null; 
    472                 return addslashes( $string ); 
    473                 // Disable rest for now, causing problems 
    474                 /* 
    475                 if( !$this->dbh || version_compare( phpversion(), '4.3.0' ) == '-1' ) 
    476                         return mysql_escape_string( $string ); 
    477                 else 
    478                         return mysql_real_escape_string( $string, $this->dbh ); 
    479                 */ 
     472        function escape($data) { 
     473                if (is_object($data)) return null; 
     474                if (is_array($data)) { 
     475                        foreach ($data as $key=>$value) { 
     476                                $data[$key] = $this->escape($value); 
     477                        } 
     478                        return $data; 
     479                } else { 
     480                        return addslashes( $data ); 
     481                        // Disable rest for now, causing problems 
     482                        /* 
     483                        if( !$this->dbh || version_compare( phpversion(), '4.3.0' ) == '-1' ) 
     484                                return mysql_escape_string( $data ); 
     485                        else 
     486                                return mysql_real_escape_string( $data, $this->dbh ); 
     487                        */ 
     488                } 
    480489        } 
    481490 
    482491        /**