【问题标题】:mysql_real_escape_string() and mysql_get_server_info(): Access denied for user ''@'127.0.0.1' (using password: NO)mysql_real_escape_string() 和 mysql_get_server_info():拒绝用户 ''@'127.0.0.1' 访问(使用密码:否)
【发布时间】:2016-06-15 12:47:16
【问题描述】:

今天我将我的 WordPress 网站转移到一个新的网络主机上,该主机运行的 php (5.5.0) 版本比我以前的网络主机更新。我转移了我的网站,并开始在我自己编写的一些插件上收到下面的错误消息。

警告:mysql_real_escape_string(): 用户''@'127.0.0.1'的访问被拒绝(使用密码:NO)...

我已经做了一些研究,但我发现我没有建立到 mysql 的链接(我认为这是错误的,因为 WordPress 数据库类为我们做了这个)。

关于如何解决问题的任何想法?您可以在下面找到我如何在插件中连接到数据库。

function init() 
{
    $this->database = $GLOBALS['wpdb'];
    $this->prefix = $GLOBALS['table_prefix'];   

    if(version_compare(mysql_get_server_info(), '4.1.0', '>=')) 
    {
        if (!empty($this->database->charset))
            $this->charset_collate .= sprintf(' DEFAULT CHARACTER SET %s', $this->database->charset);

        if (!empty($this->database->collate))
            $this->charset_collate .= ' COLLATE ' . $this->database->collate;
    }   

    register_activation_hook(__FILE__, array($this, 'install_database_tables'));
}

【问题讨论】:

  • 您是否使用新的数据库凭据设置了您的wp-config.php
  • 我做到了!我可以毫无问题地读取和写入数据库,除了上面提到的错误! :)
  • 此外,如果我要求网络主机将我的 php 版本更改为早期版本,错误就会消失 :)

标签: mysql wordpress php-5.5 mysql-real-escape-string


【解决方案1】:

在进行了更多研究并查看了 wp-db.php 文件后,我发现您需要将函数替换为以下内容:

global $wpdb;

//mysql_get_server_info() becomes
$wpdb->db_version() = 'YOUR_SQL_SERVER_INFO';

//mysql_real_escape_string() becomes
$wpdb->_real_escape('some_string') = 'ESCAPED_STRING';

【讨论】:

    猜你喜欢
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2015-10-07
    • 1970-01-01
    • 2016-06-12
    • 2021-01-05
    相关资源
    最近更新 更多