https://github.com/mysqljs/mysql#introduction
mysqljs与转义值非常不一致,或者我不理解文档。
错误:
this.table = 'elections';
mysql.query('SELECT * FROM ? where name = ?', [this.table, this.votesTable]您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册中是否有正确的语法错误:“SELECT* FROM \\FROM\‘其中name =\’prim1000\‘”
,但这是可行的:
`mysql.query('UPDATE elections SET updated_at = ? WHERE name = ?', [this.getTimeStamp(), this.votesTable])但是如果我删除“选举”在上面的查询中并加上"?“相反,它将引发一个错误。所以下面的话就行不通了。
mysql.query('UPDATE ? SET updated_at = ? WHERE name = ?', [this.table, this.getTimeStamp(), this.votesTable])发布于 2018-02-27 22:25:20
参考链接到的文档页,在“转义查询标识符”一节中,您应该能够这样做:
mysql.query('SELECT * FROM ?? where name = ?', [this.table, this.votesTable]大多数SQL框架不允许参数用于除单个值之外的任何内容。例如,非表标识符、列标识符、值列表或SQL关键字。mysqljs库不常见,因为它支持引用标识符和键/值对。
关于你的评论:
??占位符用于标识符。标识符的引用必须与值不同。在MySQL中,字符串值的引号与'string'相似,但标识符以反勾引号引用。
SELECT * FROM `mytable` where name = 'myname'mysqljs类使用??作为标识符的特殊占位符,因此您可以告诉类它必须用反勾引号引用。
https://stackoverflow.com/questions/49018805
复制相似问题