mysql_real_escape_string() 和 mysql_get_server_info():用户 ''@'127.0.0.1' 的访问被拒绝(使用密码:NO)
mysql_real_escape_string() and mysql_get_server_info(): Access denied for user ''@'127.0.0.1' (using password: NO)
今天我将我的 WordPress 网站转移到一个新的虚拟主机 运行 比我以前的虚拟主机更新的 php (5.5.0) 版本。我转移了我的网站,我开始在我自己编写的一些插件上收到下面的错误消息。
Warning: mysql_real_escape_string(): Access denied for user ''@'127.0.0.1' (using password: NO) in ...
我做了一些研究,但我发现我没有建立 link 到 mysql (我认为这是错误的,因为 WordPress 数据库 class 为我们做的)。
关于如何解决这个问题有什么想法吗?您可以在下面找到我如何在我的插件中连接到数据库。
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-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';
今天我将我的 WordPress 网站转移到一个新的虚拟主机 运行 比我以前的虚拟主机更新的 php (5.5.0) 版本。我转移了我的网站,我开始在我自己编写的一些插件上收到下面的错误消息。
Warning: mysql_real_escape_string(): Access denied for user ''@'127.0.0.1' (using password: NO) in ...
我做了一些研究,但我发现我没有建立 link 到 mysql (我认为这是错误的,因为 WordPress 数据库 class 为我们做的)。
关于如何解决这个问题有什么想法吗?您可以在下面找到我如何在我的插件中连接到数据库。
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-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';