Wordpress: Как удалить результаты при использовании $wpdb->get_results?

Для добавления новых строк в базу данных я использую $wpdb->insertи чтобы получить строки, которые я использую $wpdb->get_results,

Проблема в том, что $wpdb->insert кажется, избегает ввода. Например, a"b сохраняется как a\"b в базе данных. Но, $wpdb->get_results не похоже, чтобы вернуться назад a\"b в a"b,

Это правильное поведение по замыслу?

Должен ли я убрать результат $wpdb->get_results вручную? (Какова правильная функция для этого?)

2 ответа

$wpdb->insert() а также $wpdb->prepare() будет избегать данных, чтобы предотвратить атаки SQL-инъекций$wpdb->get_results() функция предназначена для общей работы с SQL SELECT заявления, поэтому я считаю, что тот факт, что косые черты остались на месте, является преднамеренным. Это позволяет потребителю данных обрабатывать его по мере необходимости.

Так как $wpdb->get_results() funciton возвращает массив stdClass объекты, чтобы удалить косую черту во всех столбцах в каждой строке, необходимо выполнить итерацию по строкам и по свойствам каждого объекта строки, выполняющего PHP stripslashes() функционировать на нем.

foreach( $quotes as &$quote ) {
    foreach( $quote as &$field ) {
        if ( is_string( $field ) )
            $field = stripslashes( $field );
    }
}

Дополнительная информация о функции wpdb->get_results(): http://codex.wordpress.org/Class_Reference/wpdb

http://codex.wordpress.org/Function_Reference/stripslashes_deep

//replace $_POST with $POST
    $POST      = array_map( 'stripslashes_deep', $_POST);
    $wpdb->insert( 
            'wp_mytable', 
            array( 
                'field_name'        => $POST['field_name'], 
                'type'              => $POST['type'],
                'values'            => serialize($POST['values']),
                'unanswered_link'   => $POST['unanswered_link'], 
            ), 
            array( 
                '%s','%s','%s','%s'
            ) 
        );
Другие вопросы по тегам