【问题标题】:Escaping query values in MySQL Query (node-mysql)在 MySQL Query (node-mysql) 中转义查询值
【发布时间】:2020-07-04 08:41:20
【问题描述】:

我正在尝试使用 node-mysql Escaping query values,但是当我尝试将其插入我的 MySQL 查询时,我遇到了错误并且似乎找不到问题所在。我也尝试过以不同的方式布置代码,就像在我链接的 github 示例中看到的那样。

错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'don\\'t spam!''' at line 1

banReason = 不要垃圾邮件!

var banr = con.escape(banReason)

let sql
sql = `INSERT INTO modlog (senderid, victimid, duration, releasedate, reason) VALUES ('${message.author.id}', '${user}', '${timeCode}', '${moment().add(timeValue, timeType)}', '${banr}'`
con.query(sql)

【问题讨论】:

  • 使用带参数的准备好的语句,这可以解决您的问题并保护您免受 sql 注入。见stackoverflow.com/questions/60174/…
  • 我已经看到了,但我不知道如何在节点中执行此操作,因为我相信那是针对 PHP 的?还是我感到困惑(我不是一个很好的程序员,因为我只是把它作为一种爱好)
  • 对不起,习惯的力量,这是链接stackoverflow.com/questions/15778572/…
  • 没关系,但这只是将我带到我在问题中链接的同一个 GitHub 页面。我已经在 node-MySQL 文档中尝试了 con.escape 和 ?但两者都给出了我上面显示的相同错误?
  • 你不应该逃避,这不是我试图向你展示的 stackoverflow.com/a/15779796/5193536 你看到 INSERT INTO 帖子集了吗?重要的部分是问号。

标签: mysql node.js node-mysql


【解决方案1】:

要回答这个问题,正确的方法是使用 ?可以在node-mysql GitHub 上看到 固定代码:

var values = {senderid: message.author.id, victimid: user, duration: timeCode, releasedate: releaseDate, reason: banReason} 
con.query('INSERT INTO modlog SET ?', values, function(err, result) {})

参见referenced answere的示例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2016-01-24
    • 1970-01-01
    • 2014-01-16
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    相关资源
    最近更新 更多