![]() |
Datenbank: MySQL • Version: 5.x • Zugriff über: MyDac
Parameterverwendung bei DB-, Feld- und Tabellennamen
Hallo zusammen,
ich habe früher meine SQL-Statements immer über den Formatbefehl zusammengesetzt, z.B.:
Code:
Da dies Methode ziemlich unsicher ist, wenn der Tabellenname beispielsweise von einem User eingetippt werden kann (Stichwort "SQL-Injection"), möchte ich künftig lieber sauber mit Parametern arbeiten. Bei Values - z.B. in Where-Bedingungen - ist das auch gar kein Problem. Aber bei Feld-, DB- und Tabellennamen funktioniert das scheinbar nicht. Beispiel:
MyQuery.SQL.Text := format('SELECT * FROM `%s`;',[Tabellenname]);
Code:
Das führt zu einem Fehler, da der Tabellenname offenbar mit führendem und schließendem Hochkomma in das SQL-Staement eingebaut wird.
MyQuery.SQL.Text := 'SELECT * FROM :TabName;';
MyQuery.ParamByName('TabName').AsString := TabellenName; MyQuery.Open; :TabName in die bei Feld- und Tabellennamen üblichen Hochkommas zusetzen (`:TabName`), hilft auch nicht... Übersehe ich da was oder funktionieren DB-, Tabellen- und Feldnamen einfach nicht über Parameter? Danke im Voraus! Freejay |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Nimm ein Makro:
![]() |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Du kannst lediglich Werte parametrisieren, aber keine (Tabellen-, Feld- oder sonstigen) Bezeichner, das hast Du richtig erkannt.
|
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
"Macro" ist ja dafür ein komischer Name, aber das ist genau das, was ich brauche! ;-)
Dank Euch! |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Warum komisch, es ist ja eine Makroersetzung innerhalb der Clientkomponenten.
|
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Ich verstehe und einem Makro ungefähr folgendes:
Zitat:
Für mich hat das Ersetzen von bestimmten kleinen Strings in einem größeren String durch andere kleine Strings mit dem wie oben verstandenen Begriff "Makro" nicht viel zu tun. Aber das darf natürlich jeder beliebig anders sehen! ;-) |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
Falls nicht würde ich den eingegebenen Text anhand von System-Tabellen verifizieren (gibt es eine Tabelle, dessen Text gleich ist wie der eingegebene) und es dann wie im Usprungspost selbst ersetzen. |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
|
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Zitat:
Die Benutzung von Parametern verhindert allerdings meines Wissens nach sicher SQL-Injections. |
AW: Parameterverwendung bei DB-, Feld- und Tabellennamen
Wenn diese vom DBMS direkt unterstützt werden und nicht von der Zugriffsschicht emuliert werden.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz