Sql 查询无法处理引号

Sql query can not handle quotation marks

我尝试使用 vibe.d 实现一个小型博客应用程序。我在这个地址有一个表格

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

用户输入 post 标题和 body。然后将这些信息存储在数据库中。到现在为止一切顺利。

假设用户输入一个带引号的字符串,如下所示:

deneme'miz

比sql查询变成这样:

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')

如您所见,有 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 error: Unknown column 'deneme' in 'field list'

更新:已解决

我按照提示加了双引号。

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

在它旁边加上另一个引号,像这样:

'deneme''miz'

如果不行就加双引号

"deneme'miz"