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的结果吗?(这正确的功能是什么?

$wpdb->insert()$wpdb->prepare()将转义数据以防止SQL注入攻击。$wpdb->get_results()函数旨在通常与 SQL SELECT 语句一起使用,因此我相信保留斜杠的事实是有意为之的。 这允许数据的使用者根据需要对其进行处理。

由于 $wpdb->get_results() 函数返回一个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#SELECT_Generic_Results

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'
            ) 
        );

最新更新