首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何避免撇号来匹配Node.js/Discord.js中的MySQL数据库中的数据?

如何避免撇号来匹配Node.js/Discord.js中的MySQL数据库中的数据?
EN

Stack Overflow用户
提问于 2019-07-01 03:59:23
回答 1查看 539关注 0票数 0

我知道转义在一般情况下是如何工作的,但在这种情况下,我无法得到它来给我想要的结果。

我有张桌子上有一张卡片的清单。在命令的顶部,查询将每个卡片名作为“主列表”推入数组中。在代码的后面,我让用户提供他们想要添加到他们的甲板上的卡名。为了检查他们是否使用的卡片,与拼写完全一样,它取下用户提供的每个卡名,并试图在主列表数组中找到它。

但是,当用户提供带有撇号的卡名(即Drago's Fury)时,它拒绝在列表中找到卡名。

我尝试用\'''替换所有出现的\''',以及两种不同数量的多个\'和多个' '的几个组合。似乎没有什么能让我和它相匹配。表中的Drago's Fury确实如预期的那样在名称中包含了',因为我能够通过使用\'转义将其放入表中。

下面是我的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
con.query(`SELECT * FROM cardsmaster`, (error, rows, fields) => {
    let cardsList = []
    for (var i in rows) {
        cardsList.push(rows[i].name)
    }
});

下面是如何在Drago's Fury表中列出MySQL:

这就是我现在使用的方法,当它在用户不和谐的内部提供时,尝试并使它找到Drago's Fury

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cardsToAdd = cardsToAdd.content.replace(/'/gi, "\'");

这是cardsToAdd在替换后记录Drago's Fury时显示的方式:

但是我收到了这个错误:

Error: ER_PARSE_ERROR: 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 's Fury, Fierce Boost, Fierce Boost, Fiery Rage, Fire Boost, Fire Boost, Magma Bo' at line 1

所以,我试过:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cardsToAdd = cardsToAdd.content.replace(/'/gi, "\\'");

我以为第一个\会避开第二个\和撇号,但这不是我想要的。传入的值是相同的,只是它有双引号而不是单引号,所以我不确定这是否导致了问题.

这是试图获取用户提供的内容并在主列表中找到它的部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
let usercardnamearray = cardsToAdd.split(", ")

let matchedcards = []
let unmatchedcards = []

for (let i = 0; i < usercardnamearray.length; i++) {

    console.log(usercardnamearray[i])

    let found = cardsList.indexOf(`${usercardnamearray[i]}`)
    console.log(found)

    if (found >= 0) {
        matchedcards.push(usercardnamearray[i])
    } else if (found == -1){
        unmatchedcards.push(usercardnamearray[i])
    }
}

如何才能始终匹配主列表中提供的名称?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-01 07:39:10

正如注释中解释的那样,通过使用占位符(?),输入将自动为您转义;node-mysql驱动程序为它们自己使用mysql.escape()。这将防止注入和当前错误,而不必自己做任何事情。您的撇号不会触发相同的错误,因为它是从字面上读取的,而不是语句的一部分。

示例用法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
const name = "Drago's Fury";

con.query("SELECT * FROM cardmaster WHERE name = ?", [name], (err, rows) => {
  if (err) return console.error(err);

  console.log(rows);
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56835305

复制
相关文章
局部变量错误
UnboundLocalError: local variable 'xxx' referenced before assignment
狼啸风云
2020/06/08
1.4K0
变量作用域经典错误
这段代码中X = X + Y,python是无法识别左边的X是局部变量,右边的X是全局变量的。 同样,我们使用C++来实现上面python代码的相同操作,如下:
zy010101
2022/01/10
2810
Python变量引用错误
虽然定义了变量n,然后在函数内部修改,但是还是报相同的错误。原因在于在函数内部对变量n进行修改后,变量n被python解释器理解为局部变量,就变成和上面代码一样的情况了。
狼啸风云
2020/07/06
1.3K0
实时错误 '91' :对象变量或with块变量未设置
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/details/9672911
DannyHoo
2018/09/13
4.1K0
实时错误 '91' :对象变量或with块变量未设置
实时错误 ‘91‘ :对象变量或with块变量未设置
最多的应该就是这个问题了,“实时错误‘91’:对象变量或with块变量未设置”。如右图:
DannyHoo
2022/05/09
2.3K0
实时错误 ‘91‘ :对象变量或with块变量未设置
openjpeg:解决静态链接时未定义引用错误:undefined reference to `__imp_opj_xxxxxxx'
版权声明:本文为博主原创文章,转载请注明源地址。 https://blog.csdn.net/10km/article/details/50598753
10km
2019/05/25
4.6K0
openjpeg:解决静态链接时未定义引用错误:undefined reference to `__imp_opj_xxxxxxx'
完美解决丨#在python中,如果引用的变量未定义,则会报告NameError: name ‘变量名‘ is not defined。
在python中,如果引用的变量未定义,则会报告NameError: name '变量名' is not defined。
不吃西红柿
2023/04/21
2.9K0
C/C++未定义行为
下面是一段代码,这段代码中有标准未定义的行为。代码如下: #include<iostream> using namespace std; int main() { int j = 0;
zy010101
2020/04/16
3.7K0
关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法
在本问题提供解决办法前,整个过程先引入一个实例可以更好地说明这个问题: 例:从键盘输入一个4位数,按如下规则加密后输出。加密规则:每位数字都加上7,然后用和除以10的余数取代该数字;再把第一位与第三位交换,第二位与第四位交换。 解: 函数文件:
荣仔_最靓的仔
2021/02/02
12.3K0
关于MATLAB中M文件如何解决“未定义函数或变量”的若干办法
再也不用担心变量类型错误!学会JS中如何轻松检查变量类型
如果判断的是基本数据类型或JavaScript内置对象,使用toString;如果要判断的是自定义类型,请使用instanceof。
程序视点
2023/06/13
4120
再也不用担心变量类型错误!学会JS中如何轻松检查变量类型
DS-5/RVDS4.0变量初始化错误
最近总是有各种调试时的错误,内存错误一般,我无意中发现的所有全局变量失败,也就是说,全局变量声明之后,颂值早期值误.
全栈程序员站长
2022/07/06
3850
DS-5/RVDS4.0变量初始化错误
解决调用未定义 swoole_async_readfile函数问题
https://github.com/swoole/swoole-src/issues/2439
全栈程序员站长
2022/07/11
4K0
解决调用未定义 swoole_async_readfile函数问题
c++使用了未定义类型_c++如何新建
第一个参数是一个指向SECURITY_ATTRIBUTES结构体的指针,一般的情况下,可以是nullptr。
全栈程序员站长
2022/11/09
2.7K0
GDB读取动态库中定义的全局变量错误
最近看了一篇getopt使用的文章,为了追踪其执行的逻辑,于是采用GDB挂载调试的方式进行查看。但却出现了GDB打印全局变量optind的时候出现错误。
河边一枝柳
2021/08/06
2.1K0
IE11出现"__doPostBack”未定义
  系统做迁移,在新服务器IIS上部署,部署后的系统在IE8和其他浏览器上显示正常,
_一级菜鸟
2020/07/22
2.6K0
ubuntu gcc编译时对’xxxx’未定义的引用问题
http://www.cnblogs.com/oloroso/p/4688426.html
bear_fish
2018/09/19
8.2K0
优雅地创建未定义类PHP对象
在PHP中,如果没有事先准备好类,需要创建一个未定义类的对象,我们可以采用下面三种方式:
硬核项目经理
2019/11/21
2.8K0
Array find方法在UC浏览器未定义
今天发现用UC浏览器访问一个项目出现bug,后来检查出来原来UC浏览器并没有find方法(但它有filter方法),所以写了以下垫片。。。
javascript.shop
2019/09/04
2.7K0
点击加载更多

相似问题

RoR - Model.all,但没有created_at和updated_at字段

30

插入未保存的created_at、updated_at列

50

不自动将created_at和updated_at插入到不工作的laravel中

26

updated_at和created_at字段在使用InserGetId函数插入集合时不会自动插入?

11

添加默认值与created_at相同的updated_at列

110
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文