Go sql語句引號問題

來源:互聯網
上載者:User

標籤:插入   問題   into   ace   說明   syn   轉義   check   man   

使用Go進行Mysql開發時,會遇到引號問題(實際上,與語言無關,只要使用sql就會遇到這些類似問題)。

本文舉例說明如何解決這些問題。

Example1

第一例子示範格式字元是否要加引號。

代碼如下:

detailMsg := "abc"sql := fmt.Sprintf(   "insert into tbl_log(ip, name, detail_msg) values (‘%s‘, ‘%s‘, %s)",    "1.1.0.1",     "test.py",     detailMsg,)fmt.Println("sql: ", sql)

output:

2018/04/05 17:40:00 sql: insert into tbl_log(ip, name, detail_msg) values (‘1.1.0.1‘, ‘test.py‘, abc)
2018/04/05 17:40:00 exec failed: Error 1054: Unknown column ‘abc‘ in ‘field list‘ , sql: insert into tbl_log(ip, name, detail_msg) values (‘1.1.0.1‘, ‘test.py‘, abc)

如果欄位類型是字串,格式化字元需要加上兩個單引號,也就是格式字元%s改為‘%s‘ .

正確樣本

detailMsg := "abc"sql := fmt.Sprintf(         "insert into tbl _log(ip, name, detail_msg) values (‘%s‘, ‘%s‘, ‘%s‘)",          "1.1.0.1",          "test.py",          detailMsg,        )fmt.Println("sql: ", sql)

output

sql: insert into tbl_log(ip, name, detail_msg) values (‘1.1.0.1‘, ‘test.py‘, ‘abc‘)

Example2

如果插入的內容中包含單引號,例子如下。

也就是detailMsg中如果有單引號。

detailMsg := "ab‘c"fmt.Println("detailMsg: ", detailMsg)sql := fmt.Sprintf(         "insert into tbl_log(ip, name, detail_msg) values (‘%s‘, ‘%s‘, ‘%s‘)",          "1.1.0.1",          "test.py",          detailMsg,        )fmt.Println("sql: ", sql)

output

2018/04/05 17:45:03 detailMsg: ab‘c
2018/04/05 17:45:03 sql: insert into tbl _log(ip, name, detail_msg) values (‘1.1.0.1‘, ‘test.py‘, ‘ab‘c‘)
2018/04/05 17:45:03 exec failed: Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘c‘)‘ at line 1 , sql: insert into tbl_log(ip, name, detail_msg) values (‘1.1.0.1‘, ‘test.py‘, ‘ab‘c‘)

解決辦法

對內容中的單引號進行轉義 ‘.

detailMsg:= "ab‘c"detailMsg = strings.Replace(detailMsg, "‘", "\\‘", -1)log.Println("detailMsg:", detailMsg)sql := fmt.Sprintf(  "insert into tbl_log(ip, name, detail_msg) values (‘%s‘, ‘%s‘, ‘%s‘)",   "1.1.0.1",   "test.py",   detailMsg,)log.Println("sql:", sql)

output:

2018/04/05 17:48:11 detailMsg: ab‘c
2018/04/05 17:48:11 sql: insert into tbl_log(ip, name, detail_msg) values (‘1.1.0.1‘, ‘test.py‘, ‘ab‘c‘)

Go sql語句引號問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.