webForumDet fria alternativet

Warning: mysql_real_escape_string()

2 svar · 516 visningar · startad av Pedda

PeddaMedlem sedan juni 20006 032 inlägg
#1

Sitter och programmerar på en server som är ny för mig och får felmeddelandet:

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'SYSTEM'@'localhost' (using password: NO) in ....

PHP 5.3.0
MySQL 5.1.36

Får felmeddelandet på ett script jag använt mig av tidigare utan problem på andra servrar.

<?php
class Settings
{
    protected $dbh;
    function __construct()
    {
		$dsn = 'mysql:dbname=users;host=localhost';
		$user = '*****';
		$password = '*****';

		try 
		{
			$this->dbh = new PDO($dsn, $user, $password);
			
		} 
		catch (PDOException $e) 
		{
			echo 'Connection failed: ' . $e->getMessage();
		}
	}
}

class Registration extends Settings
{
    protected $Username;
    protected $Password;
    protected $Email;
        
    // set username
    function SetUsername($username)
    {
        return $this->Username = mysql_real_escape_string($username);
    }

Någon som har tips på varför felmeddelandet skapas?

nitro2k01Medlem sedan aug. 20039 342 inlägg
#2

mysql_real_escape_string kräver en öppen mysql-koppling, eftersom den tar hänsyn till databasens teckenkodning. Och du har ingen mysql-koppling eftersom du kör PDO. Motsvarande PDO-funktion heter pdo::quote. Men varför kör du inte prepared statements?

PeddaMedlem sedan juni 20006 032 inlägg
#3

Blir nog prepared statements så småningom.
Behövde bara få upp något snabbt för stunden som bara är för ett par personer i ett intranet och tänkte att jag kunde använda ngt gammalt jag hade liggande.
Hade för mig att jag använt det och att det fungerade förut, men så var nog inte fallet.

126 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)