Well, sorry: > p s gives "j\\'ai" > puts s gives j\'ai > print s gives j\'ai so every four methods work if the result is properly printed AF Alain FELER a ñÄrit : > Thank you very much for these four answers, but curiously none works on > my box ! : > Stefan Lang : s.gsub!("'", "\\\\'") gives "j\\'ai" not "j\'ai" > Timothy Hunter : s.sub(/'/) { '\\\'' } gives "j\\'ai" > you : s.gsub!(/'/, "\\\\'") gives "j\\'ai" > and : s.gsub!(/'/) { "\\'" } gives "j'ai" > (I am using ruby 1.8.2.14 on Windows 2000 configured in french, > and I can't even type the {} characters in irb, but I tried with Scite) > However the ruby mysql interface escape_string method works fine. > Thank you. > AF > > Mike Stok a ñÄrit : > >> >> On 5-Feb-06, at 5:08 PM, Alain FELER wrote: >> >>> I want to replace all ' by \' ? (I need it to do inserts in mysql). >>> > s = "j'ai" >>> > s.gsub!(/'/,'\'') >>> > p s ==> gives j'ai and not j\'ai as I want >>> Thanks for help. >> >> >> >> What interface to MySQL are you using? I know that the Ruby DBI >> module allows you to use place-holders in queries, and the DBI layer >> does the escaping for you e.g. >> >> dbh.do("INSERT INTO people (id, name, height) VALUES(?, ?, ?)", >> nil, "Na'il", 76) >> >> The resulting statement produced by do and sent to the server looks >> like this: >> >> INSERT INTO people (id,name,height) VALUES(NULL,'Na\'il',76) >> >> (stolen from http://www.kitebird.com/articles/ruby-dbi.html) or if >> you are using the ruby mysql interface then (from http:// >> www.kitebird.com/articles/ruby-mysql.html) >> >> Using escape_string, the platypus record might be inserted as follows: >> >> name = dbh.escape_string("platypus") >> category = dbh.escape_string("don't know") >> dbh.query("INSERT INTO animal (name, category) >> VALUES ('" + name + "','" + category + "')") >> >> Hope this helps, >> >> Mike >>