\" in sql Abfragen

Hallo Leute,

ich habe mir gerade die HP von einem Freund angesehen, und der hat alle Tabellen und Spaltennamen immer so geschrieben:

“TABELLENNAME”

Ich dachte erst er parst da noch etwas raus, zwecks Sicherheit oder so, habe aber nix gefunden.

Wisst ihr was das heißt?

Ich weiß dumme Frage, weil es wahrscheinlich nur darum geht dass mit dem \ irgendwie die Zeichen passen. Irgendwas mit Unicode.

Würde aber bitte trotzdem gern eine kurze Erklärung haben.

Danke im voraus
Darian

Du kannst alle Tabellen- und Spaltennamen grundsätzlich in Anführungszeichen schreiben. Wenn du Sonderzeichen (z.B. Leerzeichen) in den Namen hast oder der Name groß geschrieben wird (PG schreibt per Default alles klein), dann setzt du Anführungszeichen drumherum.

Dies per Default zu machen, schadet nicht, wird nur vielleicht etwas unübersichtlich.

Um bei deinem Beispiel zu bleiben, wenn du schreibst:

SELECT spalte FROM TABELLENNAME

dann sucht PG die Tabelle: tabellenname (klein geschrieben).

Wenn die Tabelle also TABELLENNAME (groß geschrieben) heisst, musst du das ganze quoten.

Ok, stimmt, hört sich schon plausibel an.

Dennoch wundert es mich noch dass diese Coder, einfach jede Abfrage wie folgt eingebaut hat:

select * from \"$table\" where \"id\"=$id

Müßte doch nicht einfach immer sein, und würden da nicht einfach Hochkomma auch reichen.

Ich weiß, ich hinterfrage zuviel.

Zitat von einem Freund: Akzeptiere es einfach dass es so ist. :slight_smile:

lg Darian

An deiner Stelle würde ich den Code auch hinterfragen :wink:

Alles, was DDL ist, wird mit Anführungszeichen gequotet (und kann ggf. auch weggelassen werden, wenn keine Sonderzeichen oder Großschreibung vorkommt).

Aber das: =$id
enthält fast sicher Daten, die von extern kommen. Das müsste auf jeden Fall gequotet werden und zwar innerhalb der Applikation. Jede Programmiersprache hat dafür eigene Funktionen, um das zu realisieren.

Ok, sorry dass ich spät schreibe. Danke für eure Infos.

Ich habe bis jetzt noch nie was so gequotet, und es hat auch funktioniert.

Werde es in Zukunft einfach machen…

lg und danke euch
Darian

Nur durch Zufall und weil vielleicht bisher keiner bei dir falsche Daten in ein Formular eingegeben hat.

An sich müsstest du alle deine Programme in Hinsicht auf Sicherheitsprobleme überarbeiten :astonished: