gpt4 book ai didi

sql - 在 SQL 查询中转义单引号

转载 作者:行者123 更新时间:2023-12-03 13:38:54 25 4
gpt4 key购买 nike

我有一张 table companies ,它有两列名为 nameaddress .通过运行以下代码,将新数据插入到表中:

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来自 "my company name" 的值至 "John's company" , 我会得到一个语法错误。这是因为查询变为:
"INSERT INTO companies (name,address) VALUES ('John's company','ABC');"

'John's company'里面有一个单引号。

鉴于我已经在查询字符串定义中使用了双引号,我该如何摆脱与我的值中的单引号有关的这个错误?

最佳答案

如果您必须这样做,请使用 quote method在连接对象上:

quote(value, column = nil)
Quotes the column value to help prevent SQL injection attacks.



所以是这样的:
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 使用反引号。

关于sql - 在 SQL 查询中转义单引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8179760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com