我在我的一个网站上使用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
答案 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文件,它将更容易调试。
你可以尝试一下:
打开你的wp-config.php
在这里添加这三行:
define('WP_DEBUG', true);
define('WP_DEBUG_LOG', true);
define('WP_DEBUG_DISPLAY', false);
然后再次调用其中一个有问题的页面
将wp-content/debug.log
的内容复制并粘贴到pastebin.com
,以便我们查看
希望debug.log
能为我们提供一些线索,这些线索会在此错误发生之前发生。