在SQL查询中转义单引号
发布时间:2020-12-12 16:33:27 所属栏目:MsSql教程 来源:网络整理
导读:我有一个表公司,它有两列名称和地址.通过运行以下代码,将新数据插入到表中: my_name = "my company name"my_address = "ABC"query = "INSERT INTO companies (name,address) VALUES ('#{my_name}','#{my_address}');"ActiveRecord::Base.connection.execute(
我有一个表公司,它有两列名称和地址.通过运行以下代码,将新数据插入到表中:
my_name = "my company name" my_address = "ABC" query = "INSERT INTO companies (name,address) VALUES ('#{my_name}','#{my_address}');" ActiveRecord::Base.connection.execute(query); 如果我将my_name值从“我的公司名称”更改为“John’s company”,我将收到语法错误.这是因为查询变成: "INSERT INTO companies (name,address) VALUES ('John's company','ABC');" 和“约翰公司”内有单引号. 鉴于我已经对查询字符串定义使用了双引号,我怎么能摆脱我的价值单引号的这个错误呢? 解决方法如果你必须这样做,那么在连接对象上使用quote method:
所以这样的事情 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); 永远不要试图处理你自己的引用.并且不要尝试使用双引号引用SQL字符串文字,这是单引号;在大多数数据库中,双引号用于引用标识符(如表和列名称),但MySQL使用反引号. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |