mysql_real_escape_string in Contao
Moin alle zusammen,
Hat einer von euch eine Ahnung wie man mysql_real_escape_string in Contao benutzt ?
Ich würde gerne eine Variable escapen, komme aber nicht an die Datenbank-Connection ran, da diese in der Klasse \Contao\Database gekapselt ist.
In der Klasse \Contao\Mysql\Statement gibt es sogar eine Methode string_escape die genau das tut was ich will, leider ist sie aber protected ....
Aktuell behelfe ich mir damit, extra vor dem mysql_real_escape_string, über mysql_connect eine neue Verbindung zu öffnen ....
Aber das ist natürlich auch keine besonders saubere Lösung ;).
Vielleicht wisst ihr ja was besseres .....
Danke schonmal für Eure Hilfe,
Jan
Liste der Anhänge anzeigen (Anzahl: 1)
Die Lösung: Datenbank-Klasse austauschen/erweitern
Ok habe für mich persönlich nun folgende Lösung gefunden.
Ich habe eine neue Erweiterung geschrieben in der ich Contao zwei neue Datenbanktreiber hinzufüge.
Die zugehörigen Klassen erben von den beiden aktuellen Treibern und stellen eine Methode string_escape zur Verfügung die dann an die Datenbank-Verbindung kommt und den Escape durchführt.
Damit das Ganze funktioniert muss in der localconfig.php als Treiber:
Code:
$GLOBALS['TL_CONFIG']['dbDriver'] = 'ExtendedMysql';
bzw.:
Code:
$GLOBALS['TL_CONFIG']['dbDriver'] = 'ExtendedMysqli';
angegeben werden.
Danach besitzt das Datenbank-Objekt die Methode string_escape die dann ein neues Erzeugen der Verbindung vermeidet.
So ist das schon mal ein bisschen sauberer ...
Für bessere Lösungen wäre ich aber überaus dankbar ;).
P.S. Den SourceCode des Moduls findet Ihr im Anhang.