String insert error

PGAdmin 1.4.2

Hallo Zusammen,

Ich habe eine Tabelle wo ich song Namen speichere.
Ich habe in diese Tabelle eine text feld wo ich versucht habe einen Songname “Don’t cry” zu speichern.
Ich erhallte folgende fehlermeldung: syntax error near “t”.
Das Zeichen " ’ " kann also nicht gespeichert werden.
Was muss ich konfigurieren um diese Zeichen verwenden und in die Tabelle speichern zu können?

Vielen Dank im Voraus

Hallo raphaelf,

man kann alle Zeichen zu speichern!

Wie sieht den der Befehl zum speichern aus?



mfg

fristo

Die Fehlermeldung deutet darauf hin, das du deine Werte nicht escapen tust. Es könnte jetzt also jemand auch folgendes als Wert übergeben:

’ ; delete * from table; ’

Wenn du das in deinen Query String einsetzt und dir den entstehenden String anschaust, siehst du, das damit derjenige, der die Daten übergibt, dir einfach Befehle unterschieben kann. Das nennt man SQL-Injection und ist (leider) ein gängiger Fehler bei der Entwicklung von Applikationen.

Je nachdem, welche Programmiersprache du nutzt, gibt es auch Funktionen, um deine Werte zu escapen.

“Don’t cry”

Der fehler liegt am ’

Versuch mal “Don’t cry”

Hallo Zusammen,

Ihr seid ja wirklich schnell…

Meinen Befehl sieht es so aus:

insert into style_tbl (style) values ('Don't')

Ich weiss dass wenn ich einen backslash hinzufüge funktioniert:

insert into style_tbl (style) values ('Don\'t')

Doch gibt es nicht eine Möglichkeit so einzustellen dass ich diese Werte speichern kann?

Mein Code sieht schlussendlich so aus:

add.prepare("insert into song_tbl (song, album_id, soundpath) values ('" + newSongName + "', '" + album_id + "', '" + target + "')");
				if( ! add.exec() ) 
				{
    				QMessageBox::information(this,"",add.lastError().text());
    				return;
    			}

Hallo raphaelf,

nein!

Der Background ist UNIX-Style. Also bei Angaben von Verzeichnissen gilt auch immer das Zeichen ‘/’.



mfg

fristo

Vielen Dank :wink:

Ich werde also meinen String zuerst im C++ anpassen mit \ und erst dann in die DB speichern.

Schönen Tag :smiley: