2017-10-08 142 views
0

我想在golang使用命名參數查詢,如下所示:Golang SQL命名的參數查詢

stmt, err := db.Prepare("insert into users(name, email) values(@name, @email)") 
if err != nil { 
    //error handling 
} 

res, err := stmt.Exec(sql.Named("name", name), sql.Named("email", email)) 

if err != nil { 
     //error: sql: expected 0 arguments, got 2 
} 

我得到以下錯誤:「SQL:預計0參數,得到2」。

什麼是寫這個查詢的正確方法?

+0

? 無論如何,命名參數通常這樣寫: ...值(:名稱,:電子郵件)「) @variable - 它的變量,而不是命名參數 –

+0

github.com/go-sql-driver/mysql – kargirwar

+0

使用:name,:email給出SQL語法錯誤 – kargirwar

回答

0

Go需要支持每一種SQL服務器 - 而不是所有的SQL服務器都支持命名參數。支持他們的服務器通過各種各樣的怪癖和「陷阱」來做到這一點。但他們都支持位置參數就好了。

然而,有一個開放的問題,因爲它爲MySQL驅動程序:什麼是圖書館您使用的用來訪問MySQL https://github.com/go-sql-driver/mysql/issues/561