Nik*_*hil 15 ruby mysql ruby-on-rails-3 ruby-on-rails-3.1
我已经尝试使用谷歌来回答这个看似简单的问题,但令我惊讶的是,它没有帮助.
我的rails应用程序中的代码目前正在使用mysql gem的'prepare'方法.切换到mysql2时,会出现错误:
undefined method `prepare' for #<Mysql2::Client::0.......
Run Code Online (Sandbox Code Playgroud)
所以我尝试寻找'prepare'方法的一个版本,但到目前为止这个搜索都没有成功.任何人都可以帮我解决这个问题吗?
编辑:如果这是不可能的,有人可以让我知道是否有办法简单地用mysql2库中的东西参数化我的查询?
ren*_*_gr 14
UPDATE
正如Ryan Rapp正确指出的那样,mysql2现在支持预处理语句.从自述文件中提取以下代码段:
statement = @client.prepare("SELECT * FROM users WHERE login_count = ?")
result1 = statement.execute(1)
result2 = statement.execute(2)
statement = @client.prepare("SELECT * FROM users WHERE last_login >= ? AND location LIKE ?")
result = statement.execute(1, "CA")
Run Code Online (Sandbox Code Playgroud)
谢谢瑞恩!
原帖
我也没有找到这样的功能; 无论是来源还是文档.也许下面的代码片段可以替代您的需求?(在mysql2 gem的文档中找到):
escaped = client.escape("gi'thu\"bbe\0r's")
results = client.query("SELECT * FROM users WHERE group='#{escaped}'")
Run Code Online (Sandbox Code Playgroud)
该mysql2宝石现在根据支持预处理语句的文档.
语法如下:
statement = @client.prepare("SELECT * FROM users WHERE login_count = ?")
result1 = statement.execute(1)
result2 = statement.execute(2)
Run Code Online (Sandbox Code Playgroud)
这是在2015年6月添加了合并拉取请求.