提问人:Winterella 提问时间:7/16/2022 最后编辑:Dale KWinterella 更新时间:7/29/2022 访问量:770
尝试在 SQL 查询中转义动态字符串 [duplicate]
trying to escape dynamic string in sql query [duplicate]
问:
运行如下所示的 SQL 查询。在这里,如果名称是“Tim's Store”,我如何在下面的查询中转义它。
大多数情况下,name 变量不会有 ',但有时它会,我会遇到错误。
我该如何逃脱呢?
name = Tim's store
var sql = `INSERT INTO CHAT VALUES ('${id}', '${name}')`
DBconnection.query(sql)
答:
0赞
cstax
7/16/2022
#1
为了转义 name 变量,您可以先将完整字符串放在双引号中,然后列出当前拥有的撇号,如下所示:
name = "Tim's store";
你可以在这里找到另一个例子:https://www.digitalocean.com/community/tutorials/how-to-work-with-strings-in-javascript#using-the-alternate-string-syntax
如果您试图转义任何非字母数字符号作为阻止黑客攻击的手段,则需要使用问号占位符,如下所述(伪代码):
name = "Tim's store";
var sql = `INSERT INTO CHAT VALUES ( ? , ?)`
DBconnection.query(sql)
但是,我注意到该帖子被标记为使用 javascript 和 SQL,但 sql 查询后面的函数是 .NET 函数。
但是,我会坚持帖子上的标签所说的内容(即javascript)。为了让 javascript(客户端/前端代码)与 SQL(服务器端)一起使用,您首先需要使用 NodeJs 才能使用 SQL 语句并转义您的。
您需要首先使用此页面上的代码 https://www.geeksforgeeks.org/node-js-mysql-insert-into-table/ 了解如何使用 nodejs 连接到数据库,然后如何添加使用问号符号转义的插入语句,如代码示例中所示。
评论
0赞
Winterella
7/16/2022
使用双引号也不是一种选择。有些字符串也包含双引号,所以我也必须转义它们。还有其他方法吗?
0赞
cstax
7/16/2022
是的,请在此处查看示例和结果部分:afterhoursprogramming.com/tutorial/javascript/...。您将看到您可以使用反斜杠来转义单引号以及其他非字母数字字符。
0赞
Your Common Sense
7/16/2022
1. 转义示例具有误导性。OP 谈论的是变量的内容,而不是在代码中定义字符串。2. 为什么要链接一些外部资源而不是链接来自 Stack Overflow 的答案?3. 这就引出了最后一个问题,为什么要回答一个已经回答了十亿次的问题?
评论
Tim's store