Wordpress:使用$ wpdb-> get_results时如何取消结果?

Mis*_*hko 9 wordpress escaping wpdb

向我使用的数据库添加新行$wpdb->insert,并获取我使用的行$wpdb->get_results.

问题是$wpdb->insert似乎正在逃避输入.例如,a"b保存a\"b在数据库中.但是,$wpdb->get_results似乎没有反转义回a\"ba"b.

这是设计的正确行为吗?

我应该$wpdb->get_results手动取消结果吗?(这是什么功能?)

Bra*_*ady 6

$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 );
    }
}
Run Code Online (Sandbox Code Playgroud)

有关wpdb-> get_results()函数的更多信息:http://codex.wordpress.org/Class_Reference/wpdb#SELECT_Generic_Results