繁体   English   中英

使用Node在准备好的语句中转义数据库名称

[英]Escaping database name in prepared statement with Node

我正在尝试使用mysql库来请求我的数据库。

我需要将语法与查询占位符一起使用,因此我尝试了一个简单的请求:

connection.query('DROP DATABASE IF EXISTS ?;', ['mydb']);

但这导致:

'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 \\'\\'mydb\\'\\' at line 1'

该查询确实是:

'DROP DATABASE IF EXISTS \\'mydb\\';'

那么这实际上应该如何工作?

MySQL的表示法是:

DROP DATABASE IF EXISTS `mydb`

由于您将其转义为字符串,因此它不是数据库引用,因此可以删除。

出于这个原因,某些驱动程序支持备用占位符:

DROP DATABASE IF EXISTS ??

通常,您不能对数据库,列或表之类的内容使用占位符值,因为它们的处理方式有所不同。 这是驱动程序的限制。

您只需要注意用户提供的值和名称中带有不规则字符的名称。 这些需要根据MySQL模式标识符规则进行转义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM