Seite 2 von 3
Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 21:16
von Micky91
Ok, ich bin noch mal in mich gegangen.... und hab mal ein wenig debugging betrieben.
Es handelt sich tatsächlich um
einzelne single qute
Habe ihn nun umgewandelt, wie du beschrieben hast, aber der Backslash interessiert ihn nicht wirklich.
Der String der aus der XML-Datei kommt lautet z.B.:
Lucy's Spielplatz
Selbst mit
Lucy\'s Spielplatz interprettiert der dieses als single qoute
und somit kommt beim Versuch ihn in die Datenbank zu schreiben:
Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 21:25
von RSBasic
Dann nutze ", dann kannst du problemlos ' verwenden.
Beispiel:
Code: Alles auswählen
INSERT INTO TableName (ColumnName)
VALUES ("Lucy's Spielplatz");
Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 21:27
von Derren
Muss ich jetzt nicht verstehen, dass der Apostroph nicht escaped wird
Dann benutz RSBasic's Variante. Aber das kann's ja nicht sein. Es gibt auch Strings die beinhalten " und '

Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 21:30
von RSBasic
Eine andere Möglichkeit ist, das Zeichen doppelt zu schreiben:
Code: Alles auswählen
INSERT INTO TableName (ColumnName)
VALUES ('Lucy''s Spielplatz');
Sollte eigentlich gehen, kann es aber nicht testen.
Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 22:04
von Micky91
Variation 1 funktioniert gut.
Variation 2 fällt ja aus, weil der String schon da ist.
Aber jetzt wird kompliziert.
Ich habe doch tatsächlich auch ein paar Strings in der XML-Datei die Anführungzeichen haben.
Und die gehen nach dem Umbau jetzt nicht mehr

Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 22:13
von RSBasic
Du lädst doch aus deiner XML-Datei die SQL-Anweisung. Und bevor du diese mit DatabaseUpdate() ausführst, kannst du deinen String bearbeiten.
Da kannst du doch die Hochkommata mit ReplaceString() durch doppelte Hochkommata ersetzen, wenn sich innerhalb eines Zeichenkettenoperators befindet. Und danach führst du DatabaseUpdate() aus. Wo liegt das Problem?
Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 22:29
von Micky91
Nein in der XML-Datei stehen nur so sachen wie:
Lucy's Spielplatz
Berlin's Park
Die "große" Statue
Der Import passiert im Quelltext (derzeit mit doppelten Hochkommas sieht er so aus):
Code: Alles auswählen
DatabaseUpdate(0, "INSERT INTO database (title) " +
"VALUES (" + Chr(34) + Orte()\title + Chr(34) +")")
Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 22:33
von RSBasic
Ah okay und warum machst du nicht einfach so?
Code: Alles auswählen
DatabaseUpdate(0, "INSERT INTO database (title) VALUES ('" + ReplaceString(Orte()\title, "'", "''") + "')")
Du musst nur testen, ob es auch funktioniert.
Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 22:48
von Micky91
Das ist die Lösung, Danke.

Re: String mit Anführungzeichen in Datenbank schreiben
Verfasst: 20.11.2013 22:53
von NicTheQuick
Was du brauchst wäre das Äquivalent zur php-Funktion
mysql_real_escape_string.
Man müsste mal schauen, was das Teil genau macht und dann in PB nachbauen.
Nachtrag:
Hab hier was mehr oder weniger äquivalentes gefunden:
Code: Alles auswählen
function mysql_real_escape_string(InputString)
dim a
a=InputString
a = Replace(a,"\x00","\\x00")
a = Replace(a,"\n","\\n")
a = Replace(a,"\r","\\r")
a = Replace(a,"\\","\\\\")
a = Replace(a,"\n","\\n")
a = Replace(a,"\n","\\n")
a = Replace(a,"\","\\\")
a = Replace(a,"\x1a","\\\x1a")
mysql_real_escape_string=a
end function
Nachtrag 2:
Aber ich merke gerade, dass die Funktion nur funktioniert, wenn PB auch escaped Strings unterstützen würde. Also sonderlich gut geeignet ist das für deinen Fall nicht. Zudem fehlt hier immer noch das Escapen von ".