我正在尝试使用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\';'
那么这实际上应该如何工作?
答案 0 :(得分:1)
MySQL的表示法是:
DROP DATABASE IF EXISTS `mydb`
由于您将其转义为字符串,因此它不能删除数据库引用。
出于某些原因,某些驱动程序支持备用占位符:
DROP DATABASE IF EXISTS ??
通常您不能对数据库,列或表之类的内容使用占位符值,因为它们的处理方式有所不同。这是驱动程序的限制。
您只需要注意用户提供的值和名称中带有不规则字符的名称。这些必须根据MySQL schema identifier rules进行转义。