String mit Anführungzeichen in Datenbank schreiben

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Micky91
Beiträge: 35
Registriert: 06.11.2013 19:35

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag 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:

Code: Alles auswählen

near "s": syntax error
PureBasic 5.72 (x64) | Mac OSX 10.15.6
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag von RSBasic »

Dann nutze ", dann kannst du problemlos ' verwenden.
Beispiel:

Code: Alles auswählen

INSERT INTO TableName (ColumnName)
VALUES ("Lucy's Spielplatz");
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Derren
Beiträge: 558
Registriert: 23.07.2011 02:08

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag von Derren »

Muss ich jetzt nicht verstehen, dass der Apostroph nicht escaped wird :freak:

Dann benutz RSBasic's Variante. Aber das kann's ja nicht sein. Es gibt auch Strings die beinhalten " und ' /:->
Signatur und so
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Micky91
Beiträge: 35
Registriert: 06.11.2013 19:35

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag 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 :lol:
PureBasic 5.72 (x64) | Mac OSX 10.15.6
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag 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?
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Micky91
Beiträge: 35
Registriert: 06.11.2013 19:35

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag 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) +")")
PureBasic 5.72 (x64) | Mac OSX 10.15.6
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag 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.
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Benutzeravatar
Micky91
Beiträge: 35
Registriert: 06.11.2013 19:35

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag von Micky91 »

Das ist die Lösung, Danke. :allright:
PureBasic 5.72 (x64) | Mac OSX 10.15.6
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: String mit Anführungzeichen in Datenbank schreiben

Beitrag 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 ".
Antworten