Entwickler-Ecke
Datenbanken - Anführungszeichen in SQL Statement
NOS1971 - Do 06.03.14 21:11
Titel: Anführungszeichen in SQL Statement
Hallo,
ich würde gern in ein Textfeld einen String speichern in dem es auch " gibt ... wie behandle ich das ? Es sollen html tags in einem textfeld gespeichert werden die auch src="iuhiuhikuh" style="lkdshfgjdhljh" beinhalten können ...
aber das INSERT INTO kommt ja so damit nicht klar ... was tun ?
WasWeißDennIch - Do 06.03.14 22:38
Wie machst Du es denn? Ich kenne weder SQLite noch Deine Zugriffskomponenten, aber wenn diese SQL-Parameter unterstützen sollten, empfehle ich dringend die Verwendung derselben.
NOS1971 - Do 06.03.14 22:44
Hier ist ein Beispiel .. ich nutze nur einen sql wrapper ... die url in die db eintragen ist kein thema aber wie handle ich anführungszeichen in einem text
Delphi-Quelltext
1:
| SQLExecString := 'INSERT INTO ResultURLTable(URL, URLLINK, STATUS, PAGERANK, HTTPSTATUS) VALUES ("' + tempurlstring + '","' + linktagsource + '",-1,-1,-1' + ');'; |
tempurlstring enthält eine URL und linktagsource den Source des links also etwas in der art <a href="http://test.de" style="color:#000000;" >Linktext</a>
wenn ich das zusammenführe sieht es so aus
Delphi-Quelltext
1:
| SQLExecString := 'INSERT INTO ResultURLTable(URL, URLLINK, STATUS, PAGERANK, HTTPSTATUS) VALUES ("http://test.de","<a href="http://test.de" style="color:#000000;" >Linktext</a>",-1,-1,-1' + ');'; |
und genau da kommt er halt nicht mit klar
NOS1971 - Do 06.03.14 23:09
Also es ist so das die DB für eine Webseitenanalyse lokal auf dem Rechner läuft .. also unproblematisch :-) ... ich schaue mal ob ich das so hinbekomme indem ich ein " durch "" ersetze ... :-)
NOS1971 - Do 06.03.14 23:12
Erstklassig ... das war es :-) nun ist alles da wo es hin soll :-) ...
Vielen lieben Dank und eine gute Nacht
Nersgatt - Fr 07.03.14 09:08
Generell ist es besser, parametrisierte Abfragen zu verwenden. Das hast Du solche Probleme nicht.
Das sieht dann ungefähr so aus:
Delphi-Quelltext
1: 2: 3: 4: 5:
| myQuery.Sql.Text := 'INSERT INTO TABELLE (Wert1, Wert2, Wert3) VALUES (:Wert1, :Wert2, Wert3)'; myQuery.ParamByName('Wert1').asInteger := 4711; myQuery.ParamByName('Wert2').asFloat := 4711.123; myQuery.ParamByName('Wert3').asString := 'Hallo, "NOS"'; myQuery.ExecSql; |
Je nach Zugriffskomponenten kann das ein wenig abweichen. Aber auf diese Art musst Du Dich gar nicht darum kümmern, irgendwas zu escapen. Das ist deutlich sicherer.
Sonst legt vielleicht jemand eine präparierte Seite auf seinen Server, die Deinen Spider abstürzen lässt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!