mysql_real_escape_string bei PEAR nötig

Mik3e

Erfahrenes Mitglied
Hi,

Kurze Frage an alljene die das PEAR DB Package nutzen:
Ist die Funktion [phpf]mysql_real_escape_string[/phpf] bereits in die DB Klasse implementiert? Oder muss man diese Aktion aus Sicherheitsgründen noch vor dem Absenden des Queries explizit ausführen?

Auf gut Deutsch: Reicht das?:
PHP:
function getLanguageSelection()
	{
		$sql = ' SELECT '
			. ' * '
			. ' FROM `tbl_language` AS `tbl_language` '
			. ' ORDER BY tbl_language.`language_name` ';
	  	$result =$this->_db->query($sql);
		while($row = $result->fetchRow(DB_FETCHMODE_ASSOC)):
			$this->languageSelection.=..............
		endwhile;
		return $this->languageSelection;
	}

Oder muss man es trotz PEAR mit escape String ausführen!?:
PHP:
function getLanguageSelection()
	{
		$sql = ' SELECT '
			. ' * '
			. ' FROM `tbl_language` AS `tbl_language` '
			. ' ORDER BY tbl_language.`language_name` ';
	  	mysql_real_escape_string($sql);
	  	$result =$this->_db->query($sql);
		while($row = $result->fetchRow(DB_FETCHMODE_ASSOC)):
			$this->languageSelection.=..............
		endwhile;
		return $this->languageSelection;
	}

Danke & Ciao,
Mike
 
Die mysql_real_escape_string()-Funktion dient dazu Zeichenketten innerhalb von MySQL-Zeichenkettendeklarationen zu entschärfen und nicht die gesamte Abfragedeklaration.
 
Wofür die Funktion steht, ist mir klar...
Meine Frage war, ob diese Methode bereits in die PEAR::DB Klasse implementiert ist und somit nicht explizit vor der Übergabe an das DB Object ausgeführt werden muss.

Leider finde ich diesbezüglich nichts in der pear doku...

Ciao,
Mike
 
Ob die Funktion in der Klasse implementiert ist, kann ich dir nicht genau sage – ein Blick in die Dokumentation der Klasse oder in den Quellcode der Klasse selbst wird jedoch schnell Aufschluss geben. Falls nicht, ist die Funktion jedoch bereits ab der Version 4.3.0 in PHP selbst implementiert oder kann auch schnell selbst geschrieben werden.
 
Achso? Ab 4.3 wird diese Funktion automatisch ausgeführt? Das wußte ich nicht...
Die PEAR Klassenbibliothek zerlegen ist verdammt mühsam, darum wollte ich das eigentlich vermeiden ;)
 
Ab der PHP-Version 4.3.0 steht die Funktion nur zur Verfügung, das Ausführen musst du schon selbst erledigen.
 
Verstehe.. weil du geschrieben hast "implementiert".. Das klingt für mich nach "in den Kernel der Sprache kompiliert". Offensichtlich gibt es nicht viele Entwickler hier, die auf das PEAR Framework aufsetzen...
 
Weißt du tatsächlich, wofür die mysql_real_escape_string()-Funktion gedacht ist? Deinem Codebeispiel nach zu schließen weißt du es nicht genau.
 
Ja.. mir ist nur nicht ganz klar, wo die genauen Unterschiede zu den anderen (unzähligen) unescape Funktionen liegen.

Schöner ist es natürlich, die übergebenen Variablen vorher zu prüfen und dann erst den SQL Query zu bauen...

Was anderes:
Kennst Du Dich zufällig mit IIS aus? Habe bisher auf LAMP/Unix Systemen gearbeitet und verwende nun zum ersten mal eine MS Umgebung. Dazu hätte ich noch eine Frage..

LG
Mike
 
[…] mir ist nur nicht ganz klar, wo die genauen Unterschiede zu den anderen (unzähligen) unescape Funktionen liegen.
Unzählige andere? Ich kenne nur vier relevante Funktionen, die zum „Entschärfen“ von Zeichenketten bei Datenabfrage-Deklarationen einigermaßen geeignet sind: addshashes(), dessen anpassbaren Bruder addcslashes(), mysql_escape_string() sowie dessen Nachfolger mysql_real_escape_string(), wobei die letzte bei MySQL-Datenbankabfragen bevorzugt sein sollte, da diese für solche Zwecke gedacht ist (natürlich gingen auch noch Konstrukte mit der str_replace()- oder preg_replace()-Funktion).
 
Zurück