Make WordPress Core


Ignore:
Timestamp:
05/06/2015 09:01:09 PM (10 years ago)
Author:
johnbillion
Message:

WPDB: Allow queries to reference tables in the dbname.tablename format, and allow table names to contain any valid character, rather than just ASCII.

Merge of [32368] to the 4.1 branch.

Props pento, willstedt for the initial patch.

See #32090.

File:
1 edited

Legend:

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

    r32402 r32412  
    22472247
    22482248        $charsets = $columns = array();
    2249         $results = $this->get_results( "SHOW FULL COLUMNS FROM `$table`" );
     2249
     2250        $table_parts = explode( '.', $table );
     2251        $table = '`' . implode( '`.`', $table_parts ) . '`';
     2252        $results = $this->get_results( "SHOW FULL COLUMNS FROM $table" );
    22502253        if ( ! $results ) {
    22512254            return new WP_Error( 'wpdb_get_table_charset_failure' );
     
    28202823                . '|UPDATE(?:\s+LOW_PRIORITY)?(?:\s+IGNORE)?'
    28212824                . '|DELETE(?:\s+LOW_PRIORITY|\s+QUICK|\s+IGNORE)*(?:\s+FROM)?'
    2822                 . ')\s+`?([\w-]+)`?/is', $query, $maybe ) ) {
    2823             return $maybe[1];
     2825                . ')\s+((?:[0-9a-zA-Z$_.`]|[\xC2-\xDF][\x80-\xBF])+)/is', $query, $maybe ) ) {
     2826            return str_replace( '`', '', $maybe[1] );
    28242827        }
    28252828
     
    28282831                . 'SHOW\s+TABLE\s+STATUS.+(?:LIKE\s+|WHERE\s+Name\s*=\s*)'
    28292832                . '|SHOW\s+(?:FULL\s+)?TABLES.+(?:LIKE\s+|WHERE\s+Name\s*=\s*)'
    2830                 . ')\W([\w-]+)\W/is', $query, $maybe ) ) {
    2831             return $maybe[1];
     2833                . ')\W((?:[0-9a-zA-Z$_.`]|[\xC2-\xDF][\x80-\xBF])+)\W/is', $query, $maybe ) ) {
     2834            return str_replace( '`', '', $maybe[1] );
    28322835        }
    28332836
     
    28472850                . '|(?:GRANT|REVOKE).*ON\s+TABLE'
    28482851                . '|SHOW\s+(?:.*FROM|.*TABLE)'
    2849                 . ')\s+\(*\s*`?([\w-]+)`?\s*\)*/is', $query, $maybe ) ) {
    2850             return $maybe[1];
     2852                . ')\s+\(*\s*((?:[0-9a-zA-Z$_.`]|[\xC2-\xDF][\x80-\xBF])+)\s*\)*/is', $query, $maybe ) ) {
     2853            return str_replace( '`', '', $maybe[1] );
    28512854        }
    28522855
Note: See TracChangeset for help on using the changeset viewer.