mysqli_real_escape_string()期望参数2在WordPress中是字符串错误

时间:2018-04-30 08:21:22

标签: php wordpress mysqli

我在我的一个网站上使用WordPress,突然我在记录之前遇到了这个错误,之前工作正常。

  

警告:mysqli_real_escape_string()期望参数2为字符串,   第1105行/public_html/wp-includes/wp-db.php中给出的对象

这是导致问题的功能。

function _real_escape( $string ) {

    if ( $this->dbh ) {
        if ( $this->use_mysqli ) {
            $escaped = mysqli_real_escape_string( $this->dbh, $string );
        } else {
            $escaped = mysql_real_escape_string( $string, $this->dbh );

        }

        $escaped = addslashes( $string );
    }

    return $this->add_placeholder_escape( $escaped );
}

注意:我目前的PHP版本是5.6

2 个答案:

答案 0 :(得分:1)

你需要改变

$escaped = mysql_real_escape_string( $string, $this->dbh );

使用

$escaped = mysqli_real_escape_string( $this->dbh, $string);

因为您正在使用mysqli

if ( $this->use_mysqli ) {
            $escaped = mysqli_real_escape_string( $this->dbh, $string );
        }

此处您正在使用mysql

else {
   $escaped = mysql_real_escape_string( $string, $this->dbh );

}

mysqli_real_escape_string()期望第一个参数应该是数据库连接,但是这里给出的参数是$string。这是不正确的。

答案 1 :(得分:0)

错误消息指向WordPress文件。如果它提到一个WPML文件,它将更容易调试。

你可以尝试一下:

  1. 打开你的wp-config.php

  2. 在这里添加这三行:

    define('WP_DEBUG', true);
    define('WP_DEBUG_LOG', true);
    define('WP_DEBUG_DISPLAY', false);
    
  3. 然后再次调用其中一个有问题的页面

  4. wp-content/debug.log的内容复制并粘贴到pastebin.com,以便我们查看

  5. 希望debug.log能为我们提供一些线索,这些线索会在此错误发生之前发生。