我在使用数据库函数的 php 页面上收到以下错误:
警告:mysql_real_escape_string() [function.mysql-real-escape-string]:用户'apache'@'localhost'的访问被拒绝
我知道我必须与我的数据库建立有效的连接,但这是“问题”。连接到我的数据库的类如下所示:
class Database
{
private static $instance = null;
private static $conn;
private function __construct()
{
try {
self::$conn = new mysqli('localhost', 'root', 'user', 'database');
} catch (Exception $ex) {
$errorpager = new CustomPageGenerator();
$errorpager->generateErrorPage("Connection to database failed. Please try again later.");
}
}
public static function getInstance()
{
try {
if (self::$instance == null) {
self::$instance = new Database();
}
return self::$instance;
} catch (Exception $ex) {
$errorpager = new CustomPageGenerator();
$errorpager->generateErrorPage("Connection to database failed. Please try again later.");
return false;
}
}
public function query($sql)
{
try {
return self::$conn->query($sql);
} catch (Exception $ex) {
$errorpager = new CustomPageGenerator();
$errorpager->generateErrorPage("Connection to database failed. Please try again later.");
return false;
}
}
}
如您所见,我为此使用了单例模式。但即使我放了一个
Database::getInstance();
在我的代码一开始打开连接时,我不断收到此错误。如何正确打开连接以便可以使用 mysql_real_escape_string() 函数?
谢谢。
这是修复
将此函数添加到数据库类:
public static function getConnection()
{
self::getInstance();
return self::$conn;
}
将每一个 mysql_real_escape_string( 替换为 mysqli_real_escape_string(Database::getConnection(),