I have a table companies
, which has two columns named name
and address
. By running the following code, new data are inserted into the
If you must do it this way then use the quote method on the connection object:
quote(value, column = nil)
Quotes the column value to help prevent SQL injection attacks.
So something like this:
my_name = ActiveRecord::Base.connection.quote("John O'Neil")
my_address = ActiveRecord::Base.connection.quote("R'lyeh")
query = "INSERT INTO companies (name,address) VALUES (#{my_name}, #{my_address})"
ActiveRecord::Base.connection.execute(query);
Never ever try to handle your own quoting. And don't try to use double quotes for quoting an SQL string literal, that's what single quotes are for; double quotes are for quoting identifiers (such as table and column names) in most databases but MySQL uses backticks for that.