在mysql中使用Rails ActiveRecord::Base.connection.exec_query绑定参数

问题描述 投票:0回答:1

我正在尝试使用 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
的上下文中使用绑定参数。

ruby-on-rails ruby activerecord
1个回答
0
投票

可能您的绑定操作不正确。尝试这样的事情:

query = "SELECT * FROM accounts WHERE name = $1 AND description = $2"
ActiveRecord::Base.connection.exec_query(query, "SQL", [[nil, "Some account"], [nil, "Some Desc"]])
© www.soinside.com 2019 - 2024. All rights reserved.