Make WordPress Core


Ignore:
Timestamp:
07/29/2015 06:45:12 AM (11 years ago)
Author:
pento
Message:

WPDB: ::strip_text_from_query() doesn't pass a length to ::strip_invalid_text(), which was causing queries to fail when they contained characters that needed to be sanity checked by MySQL.

Props dd32, mdawaffe, pento.

Merges [33310] to the 4.1 branch.

See #32279.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/4.1/src/wp-includes/wp-db.php

    r33478 r33479  
    25712571            if ( is_array( $value['length'] ) ) {
    25722572                $length = $value['length']['length'];
     2573                $truncate_by_byte_length = 'byte' === $value['length']['type'];
    25732574            } else {
    25742575                $length = false;
     2576                // Since we have no length, we'll never truncate.
     2577                // Initialize the variable to false. true would take us
     2578                // through an unnecessary (for this case) codepath below.
     2579                $truncate_by_byte_length = false;
    25752580            }
    25762581
     
    25842589                continue;
    25852590            }
    2586 
    2587             $truncate_by_byte_length = 'byte' === $value['length']['type'];
    25882591
    25892592            $needs_validation = true;
     
    26602663                    }
    26612664
    2662                     $queries[ $col ] = $this->prepare( "CONVERT( LEFT( CONVERT( %s USING $charset ), %.0f ) USING {$this->charset} )", $value['value'], $value['length']['length'] );
     2665                    if ( is_array( $value['length'] ) ) {
     2666                        $queries[ $col ] = $this->prepare( "CONVERT( LEFT( CONVERT( %s USING $charset ), %.0f ) USING {$this->charset} )", $value['value'], $value['length']['length'] );
     2667                    } else if ( 'binary' !== $charset ) {
     2668                        // If we don't have a length, there's no need to convert binary - it will always return the same result.
     2669                        $queries[ $col ] = $this->prepare( "CONVERT( CONVERT( %s USING $charset ) USING {$this->charset} )", $value['value'] );
     2670                    }
    26632671
    26642672                    unset( $data[ $col ]['db'] );
Note: See TracChangeset for help on using the changeset viewer.