Make WordPress Core

Ticket #51740: 51740.diff

File 51740.diff, 1.8 KB (added by SergeyBiryukov, 2 years ago)
  • src/wp-includes/class-wp-meta-query.php

     
    679679                                        case 'REGEXP':
    680680                                                $operator = $meta_compare_key;
    681681                                                if ( isset( $clause['type_key'] ) && 'BINARY' === strtoupper( $clause['type_key'] ) ) {
    682                                                         $cast = 'BINARY';
     682                                                        $cast     = 'BINARY';
     683                                                        $meta_key = "CAST($alias.meta_key AS BINARY)";
    683684                                                } else {
    684                                                         $cast = '';
     685                                                        $cast     = '';
     686                                                        $meta_key = "$alias.meta_key";
    685687                                                }
    686                                                 $where = $wpdb->prepare( "$alias.meta_key $operator $cast %s", trim( $clause['key'] ) ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
     688                                                $where = $wpdb->prepare( "$meta_key $operator $cast %s", trim( $clause['key'] ) ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
    687689                                                break;
    688690
    689691                                        case '!=':
     
    705707                                        case 'NOT REGEXP':
    706708                                                $operator = $meta_compare_key;
    707709                                                if ( isset( $clause['type_key'] ) && 'BINARY' === strtoupper( $clause['type_key'] ) ) {
    708                                                         $cast = 'BINARY';
     710                                                        $cast     = 'BINARY';
     711                                                        $meta_key = "CAST($subquery_alias.meta_key AS BINARY)";
    709712                                                } else {
    710                                                         $cast = '';
     713                                                        $cast     = '';
     714                                                        $meta_key = "$subquery_alias.meta_key";
    711715                                                }
    712716
    713                                                 $meta_compare_string = $meta_compare_string_start . "AND $subquery_alias.meta_key REGEXP $cast %s " . $meta_compare_string_end;
     717                                                $meta_compare_string = $meta_compare_string_start . "AND $meta_key REGEXP $cast %s " . $meta_compare_string_end;
    714718                                                $where               = $wpdb->prepare( $meta_compare_string, $clause['key'] ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
    715719                                                break;
    716720                                }