データベース関数を使用する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()関数を使用できるように、接続を正しく開くにはどうすればよいですか?
ありがとう。
そしてここにルフィックスがあります
次の関数をDatabaseクラスに追加しました。
public static function getConnection()
{
self::getInstance();
return self::$conn;
}
すべてのmysql_real_escape_string(をmysqli_real_escape_string(Database :: getConnection())に置き換えました。