2017-09-25 74 views
0

我尝试使用vibe.d实现一个小型博客应用程序。我在这一个形式ADRESSsql查询不能处理引号

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

用户输入文章标题和正文。这些信息比存储在数据库中。到现在为止这么好。

比方说,用户输入一个字符串,用引号是这样的:

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("'",`''`); 
+0

错误有没有关系引号。本地主机有名称和理由。它是* LOCAL HOST *,表示您可以在本地访问*。我们无法访问它。 – tilz0R

回答

1

把一个其他引号旁边,像这样:

'deneme''miz'

如果不工作,只是把双引号

"deneme'miz"