Heim > Java > javaLernprogramm > Können vorbereitete Anweisungen in MySQL dynamisch angegebene Spaltennamen verarbeiten?

Können vorbereitete Anweisungen in MySQL dynamisch angegebene Spaltennamen verarbeiten?

Mary-Kate Olsen
Freigeben: 2024-12-21 05:07:13
Original
140 Leute haben es durchsucht

Can Prepared Statements in MySQL Handle Dynamically Specified Column Names?

Variable Spaltennamen in vorbereiteten Anweisungen

Problem:

Verwendung vorbereiteter Anweisungen zum Auswählen von Zeilen , können Sie damit die zurückgegebenen Spaltennamen angeben? Methode?

Kontext:

Beim Arbeiten mit MySQL und Java führen Versuche, Spaltennamen als Parameter in eine vorbereitete Anweisung aufzunehmen, dazu, dass die Spaltennamen als Literal eingefügt werden Zeichenfolge in der Abfrage, nicht als tatsächliche Spaltennamen.

Erklärung:

Vorbereitet Anweisungen sollen die SQL-Injection verhindern, indem sie die Angabe von Parametern ermöglichen, ohne dass sie direkt in die Abfragezeichenfolge eingefügt werden. Dieser Mechanismus ist jedoch für Parameterwerte gedacht und nicht für die Änderung der Abfrage selbst.

Problemumgehung:

1. Überdenken des Datenbankdesigns:

Vermeiden Sie es, Spaltennamen dem Benutzer direkt zugänglich zu machen. Erwägen Sie stattdessen die Verwendung eines anderen Mechanismus, z. B. das Erstellen einer weiteren Spalte in der Datenbank, um die gewünschten Spaltennamen neben den Daten zu speichern.

2. Manuelle Abfragekonstruktion:

Wenn eine Änderung des Datenbankdesigns nicht möglich ist, können Sie die Eingabespaltennamen bereinigen und die SQL-Abfrage manuell erstellen. Verwenden Sie die Methode String#replace(), um alle Vorkommen des Anführungszeichens in den Spaltennamen zu maskieren.

Schlussfolgerung:

Es ist zwar nicht möglich, die zurückgegebene Spalte anzugeben Namen als Parameter in vorbereiteten Anweisungen verwenden, gibt es alternative Ansätze, um die gewünschte Funktionalität zu erreichen. Sorgen Sie für eine ordnungsgemäße Eingabebereinigung, um Sicherheitslücken durch SQL-Injection zu verhindern.

Das obige ist der detaillierte Inhalt vonKönnen vorbereitete Anweisungen in MySQL dynamisch angegebene Spaltennamen verarbeiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage