webForumDet fria alternativet

Warning: mysql_real_escape_string()

PHP

2 svar · 516 visningar · startad av Pedda

Medlem sedan juni 20006 031 inlägg
Frågan#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?

Medlem sedan aug. 20039 340 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?

Medlem sedan juni 20006 031 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.

263 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)