我需要使用ruby scipt更新一個數據庫表與另一個數據庫表的數據。如果該字段中有單引號,則會引發該錯誤。如何避免它?使用單引號更新數據庫失敗Ruby on Rails
在下面的示例中,它無法插入nish's。
A_db: products table info:
id text
----------------
1 hashh
2 nish's
A_db = Mysql2::Client.new(
:host => "xxx",
:username => "xxx",
:database => "xxx",
:password => "xxx")
B_db = Mysql2::Client.new(
:host => "zzz",
:username => "xxx",
:database => "xxx",
:password => "xxx")
Adata = A_db.query("select * from products;")
Adata.each do |d|
id= d['id']
B_db.query("insert ignore into products(id, text) values('#{id}', '#{d['text']}')")
end
是的,你需要逃避'd [「文本」]'的價值,因爲它可能包含單個引用(或更糟糕的是:執行SQL注入的代碼)。 – Wukerplank
你有沒有考慮用普通的'SQL'來做這件事?似乎根本就不需要Ruby。 SQL將比將所有內容加載到內存中快得多。 – spickermann
@Wukerplank如何在這句話中逃避它? –