0
私は(MySQLを使用して)このようなクエリの何かを実行したい:Golang複数の引数を使用して、データベース/ sql.DB.QueryRow
select * from user where id = 5
例1.これはerr = sql.ErrNoRows
を返します。
err := db.QueryRow("select * from user where ? = ?", f, v).Scan(&user.Id, etc...)
例2.上記は動作しませんので、私はそれをしかし働くこのように、やっていることは右に感じることはありません。
err := db.QueryRow("select * from user where "+f+" = ?", v).Scan(&user.Id, etc...)
何Exで間違っています。 1?例2はこれを受け入れる方法ですか?
コメント内のリンクからEDIT
私はそれを第三の方法を行うことができます。
例3:
q := fmt.Sprintf("select * from user where %s = ?", f)
err := db.QueryRow(q, v).Scan(&user.Id, etc...)
をあなたの質問は何ですか? – Adrian
[Golang ORDER BY issue with MySql]の関連する/可能な複製(https://stackoverflow.com/questions/30867337/golang-order-by-issue-with-mysql/30867686#30867686)。 – icza
「どこ? =? 'の動作は、データベースドライバとそれぞれの'? 'が表すものによって異なります。私がよく知っている(Postgres、MySQL、SQLite)のDBでは、カラム名ではなく、値に対してのみ変数置換を使うことができます。これは 'f'があなたのカラム名であることを意味し、2回目の試行(そして同等の3番目の)は"正しい "だけでなく、唯一のオプションです。 – Flimzy