2017-09-25 14 views
0

Ich versuche, eine kleine Blog-Anwendung mit vibe.d zu erreichen. Ich habe eine Form in dieserSql-Abfrage kann nicht mit Anführungszeichen umgehen

http://localhost:8888/gönderiler/oluştur

Benutzereingaben Beitragstitel und -inhalt adressieren. Dann werden diese Informationen in einer Datenbank gespeichert. Bis jetzt so weit so gut.

Lasst uns sagen, gibt der Benutzer eine Zeichenfolge mit einem Anführungszeichen wie folgt aus:

deneme'miz

als SQL-Abfrage wird wie folgt aus:

INSERT INTO gonderiler (kullanici_no, baslik, icerik, created_at, updated_at) VALUES (1, 'Deneme', 'deneme'miz', '2017-09-25 12:29:30', '2017-09-25 12:29:30')

Wie sehen, gibt es 3 Anführungszeichen Zeichen .

auto başlık = this.başlık_.replace("'","\'"); 
    auto içerik = this.içerik_.replace("'","\'"); 

    logInfo("%s %s", başlık, içerik); 

    auto sqlKomutu = "INSERT INTO gonderiler (kullanici_no, baslik, icerik, created_at, updated_at) VALUES (1, '" 
        ~ başlık ~ 
        "', '" 
        ~içerik ~ 
        "', '" 
        ~ zaman ~ 
        "', '" 
        ~ zaman ~ 
        "')"; 

Ich habe versucht, "Zeichen mit" zu ersetzen, aber ich denke, es funktioniert nicht.

Ein Freund von mir schlug vor, diese Zeichen zu verwenden.

merhaba "dünya"

Aber dieses Mal bekomme ich einen Fehler wie folgt aus:

MySQL error: Unknown column 'deneme' in 'field list'

Update: gelöst

ich doppelte Anführungszeichen geputtet wie vorgeschlagen.

auto başlık = this.başlık_.replace("'",`''`); 
    auto içerik = this.içerik_.replace("'",`''`); 
+0

Fehler nichts mit dem zu tun hat, Zitate. Und localhost hat einen Namen mit Grund. Es ist * LOKALER HOST *, was bedeutet, dass Sie * lokal * darauf zugreifen können. Wir können nicht darauf zugreifen. – tilz0R

Antwort

1

die ein weiteres Anführungszeichen neben es ausdrückte, etwa so:

'deneme''miz'

Wenn das nicht funktioniert, nur Marken doppelte Anführungszeichen setzen

"deneme'miz"

Verwandte Themen