SQL查询无法处理引号



我尝试使用Vibe.D实现一个小型博客应用程序。我在这个地址中有一个形式

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

用户输入帖子标题和正文。这些信息存储在数据库中。到目前为止,一切都很好。

假设用户输入一个带有引号标记的字符串:

neme'miz

比SQL查询变得如此:

插入Gonderiler(Kullanici_no,Baslik,icerik,create_at, updated_at)值(1,'neme','deneme'miz','2017-09-25 12:29:30', '2017-09-25 12:29:30')

正如您所看到的,有3个引号标志。

    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 ~
                     "')";

我试图用'替换"字符",但我认为它不起作用。

我的一个朋友建议使用这些字符。

merhaba "dünya"

但是这次我会得到这样的错误:

mysql错误:未知列'nememe'在"字段列表"

更新:已解决

我按照建议的双引号标记。

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

在其旁边添加另一个引号标记,例如:

'deNeme'miz'

如果那不起作用,只需放置双引号

" neme'miz"

最新更新