WordPress.org

Make WordPress Core

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

File wp-db-escape-patch.diff, 1.5 KB (added by sowsinsk, 9 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        /**