我正在尝试使用 Rails 中的绑定参数,使用
ActiveRecord::Base.connection.exec_query
来创建 mysql
数据库,但我做错了。
这是代码:
query = "Select * from accounts where name = ? AND description = ?"
ActiveRecord::Base.connection.exec_query(query,name = "SQL",[ [nil, "Some account"], [nil, "Some Desc"] ])
运行时出现此错误:
SQL (68.7ms) 从名称 = ? 的帐户中选择 *和描述 = ?
ActiveRecord::StatementInvalid: Mysql2::Error: 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 '? 附近使用的正确语法。和描述 = ?'在第 1 行
这是exec_query
的文档。
我知道还有其他选择:
Account.where("name=? AND description=?", "Some account", "Some Desc")
Account.where(name: "Some account", description: "Some Desc")
但是,我正在尝试弄清楚如何在
exec_query
的上下文中使用绑定参数。
可能您的绑定操作不正确。尝试这样的事情:
query = "SELECT * FROM accounts WHERE name = $1 AND description = $2"
ActiveRecord::Base.connection.exec_query(query, "SQL", [[nil, "Some account"], [nil, "Some Desc"]])