Backslash in String?
-
In @MyText steht nix drin! Das ist ein Platzhalter für einen Parameter, welcher der DB separat übergeben wird!!!
Das was MySql macht mit dem Esquaping macht ist IMHO nur gemurkse und nicht eine saubere Lösung...
Eine saubere Lösung ist z.B.:
http://www.uni-kiel.de/rz/lehr/doku/perlkurs/node88.htmlAdd: Und die MS-DB Schnittstellen können das alle... z.B. CDaoRecordset::SetParamValue
-
Schön. Und was glaubst du was dieser Code dann macht?
Der setzt auch nur einen SQL-Query zusammen und senden diesen an die Datenbank.Wenn du dann in diesem Text ein Escape drin hast muss du dies auch ändern.
Ob das die Funktionen zum Binden von Parametren dann im Hintergrund machen ändert nichts daran das es gemacht werden muss.Du spricht im Übrigen von einem Scriptsprache, Framework oder sonstwas.
Ich spreche von Direkt mit der DB kommunizieren über C-API
DU kannst auch ODBC verwenden um mit Datenbank zu sprechen nur ist das nicht sehr effizient.
-
Ich will Dir wirklich nicht zu Nahe treten... aber wer sowas behauptet hat von "echten" Datenbanken keine Ahnung...
Schau Dir mal bitte die Native Interfaces von "echten" Datenbanken wie DB2, Oracle, MS-SQL, usw. an!
Nur als kleiner Hinweis (DB2):
http://www.devx.com/IBMDB2/Article/27475
(und da im besonderen BindParam)
-
Und was hat dies nun mit SQL-Injektions zu tun.
Datenbanken sprechen SQL.
Wie eine API deinen CODE dann zu SQL zusammensetzt stand hier nie zur Debatte.BindParam ist ein Befehl eines API.
Das hat nichts mit SQL zu tun.Ob andere Datenbanken den Text escapen müssen stand hier nie zur Debatte. Ich habe von MySQL gesprochen.
-
Unix-Tom schrieb:
Ich habe von MySQL gesprochen.
Und ich habe davon gesprochen das sowas murks ist, wenn man Daten in SQL-Strings verpacken muss!
Das macht heute keine vernünftige Datenbank!