WordPress.org

Make WordPress Core

Ticket #15158: 15158.diff

File 15158.diff, 2.0 KB (added by sorich87, 4 years ago)
  • wp-includes/wp-db.php

     
    11971197                $formats = $format = (array) $format; 
    11981198                $fields = array_keys( $data ); 
    11991199                $formatted_fields = array(); 
     1200                $real_data = array(); 
    12001201                foreach ( $fields as $field ) { 
     1202                        if ( $data[$field] === null ) { 
     1203                                $formatted_fields[] = 'NULL'; 
     1204                                array_shift( $formats ); 
     1205                                continue; 
     1206                        } 
    12011207                        if ( !empty( $format ) ) 
    12021208                                $form = ( $form = array_shift( $formats ) ) ? $form : $format[0]; 
    12031209                        elseif ( isset( $this->field_types[$field] ) ) 
     
    12051211                        else 
    12061212                                $form = '%s'; 
    12071213                        $formatted_fields[] = $form; 
     1214                        $real_data[] = $data[$field]; 
    12081215                } 
    12091216                $sql = "{$type} INTO `$table` (`" . implode( '`,`', $fields ) . "`) VALUES ('" . implode( "','", $formatted_fields ) . "')"; 
    1210                 return $this->query( $this->prepare( $sql, $data ) ); 
     1217                return $this->query( $this->prepare( $sql, $real_data ) ); 
    12111218        } 
    12121219 
    12131220        /** 
     
    12371244 
    12381245                $formats = $format = (array) $format; 
    12391246                $bits = $wheres = array(); 
     1247                $real_data = array(); 
    12401248                foreach ( (array) array_keys( $data ) as $field ) { 
     1249                        if ( $data[$field] === null ) { 
     1250                                $bits[] = "`$field` = NULL"; 
     1251                                array_shift( $formats ); 
     1252                                continue; 
     1253                        } 
    12411254                        if ( !empty( $format ) ) 
    12421255                                $form = ( $form = array_shift( $formats ) ) ? $form : $format[0]; 
    12431256                        elseif ( isset($this->field_types[$field]) ) 
     
    12451258                        else 
    12461259                                $form = '%s'; 
    12471260                        $bits[] = "`$field` = {$form}"; 
     1261                        $real_data[] = $data[$field]; 
    12481262                } 
    12491263 
    12501264                $where_formats = $where_format = (array) $where_format; 
     
    12591273                } 
    12601274 
    12611275                $sql = "UPDATE `$table` SET " . implode( ', ', $bits ) . ' WHERE ' . implode( ' AND ', $wheres ); 
    1262                 return $this->query( $this->prepare( $sql, array_merge( array_values( $data ), array_values( $where ) ) ) ); 
     1276                return $this->query( $this->prepare( $sql, array_merge( array_values( $real_data ), array_values( $where ) ) ) ); 
    12631277        } 
    12641278 
    12651279        /**