Javascript 删除节点js mysql查询中的斜杠

Javascript 删除节点js mysql查询中的斜杠,javascript,mysql,sql,node.js,Javascript,Mysql,Sql,Node.js,这是我的密码 pool.getConnection(function (err, connection) { connection.query("delete from userFiles where type = 1 and typeId = " + taskId + " and fileName NOT IN ('?') ",[oldFileNames], functi

这是我的密码

pool.getConnection(function (err, connection) {
        connection.query("delete from userFiles where type = 1 and 
                          typeId = " + taskId + " and fileName 
                          NOT IN ('?') ",[oldFileNames], function (err, rows) {

        });
    });
现在的问题是,node js正在生成这样的查询

delete from table_name where type = 1 and typeId = 1 and 
fileName NOT IN (\'\'upload_149f2b78e5fd4096781bb5b8719b874f.png,upload_e8185e896cb0f8bb0b66d807cc60922c.png\'\')
connection.query("delete from userFiles where type = 1 and typeId = " + taskId + " and
                    fileName NOT IN ('" + oldFileNames + "') ", 
                      function (err, rows) {
delete from userFiles where type = 1 and typeId = 1 and 
fileName NOT IN (\'upload_149f2b78e5fd4096781bb5b8719b874f.png,
upload_e8185e896cb0f8bb0b66d807cc60922c.png\')
我甚至试过这样

delete from table_name where type = 1 and typeId = 1 and 
fileName NOT IN (\'\'upload_149f2b78e5fd4096781bb5b8719b874f.png,upload_e8185e896cb0f8bb0b66d807cc60922c.png\'\')
connection.query("delete from userFiles where type = 1 and typeId = " + taskId + " and
                    fileName NOT IN ('" + oldFileNames + "') ", 
                      function (err, rows) {
delete from userFiles where type = 1 and typeId = 1 and 
fileName NOT IN (\'upload_149f2b78e5fd4096781bb5b8719b874f.png,
upload_e8185e896cb0f8bb0b66d807cc60922c.png\')
生成的查询如下所示

delete from table_name where type = 1 and typeId = 1 and 
fileName NOT IN (\'\'upload_149f2b78e5fd4096781bb5b8719b874f.png,upload_e8185e896cb0f8bb0b66d807cc60922c.png\'\')
connection.query("delete from userFiles where type = 1 and typeId = " + taskId + " and
                    fileName NOT IN ('" + oldFileNames + "') ", 
                      function (err, rows) {
delete from userFiles where type = 1 and typeId = 1 and 
fileName NOT IN (\'upload_149f2b78e5fd4096781bb5b8719b874f.png,
upload_e8185e896cb0f8bb0b66d807cc60922c.png\')
两者都会导致查询的
mysql
语法错误(附加斜杠)


您能建议一下,我能做些什么来消除这个错误。

一个可能的解决方案是使用connection.escape()


一种可能的解决方案是使用connection.escape()


您不应该在
占位符周围添加引号。移除它们

您还应该传递数组,而不是字符串。假设它是一个干净的字符串,您可以使用
split

connection.query(
      "delete from userFiles where type = 1 and typeId = " + taskId +
      " and fileName NOT IN (?) ", [oldFileNames.split(/,\s*/)],
      function (err, rows) {

您不应该在
占位符周围添加引号。移除它们

您还应该传递数组,而不是字符串。假设它是一个干净的字符串,您可以使用
split

connection.query(
      "delete from userFiles where type = 1 and typeId = " + taskId +
      " and fileName NOT IN (?) ", [oldFileNames.split(/,\s*/)],
      function (err, rows) {


我得到了这样的结果,
从type=1、typeId=1、fileName不在的用户文件中删除(\'upload'u d46d172a7aaabf50f7598a334cc2ce37.png,upload'u B008EAA4F8731BFA7D3AEC3614CF15E.png\)
@NiranjanNRaju看起来您的
旧文件名
字符串包含引号,这是个问题。你能看看吗?不。。。我只传递逗号分隔的名称。上面的查询是删除所有行。什么是旧文件名?数组还是字符串?需要一个数组,而不是一个字符串。我得到的是这样的,
从用户文件中删除,其中type=1,typeId=1,fileName不在(\'upload\'d46d172a7aaabf50f7598a334cc2ce37.png,upload\'B008EAA4F8731BFA7D3AEC3614CF15E.png\)
@NiranjanNRaju看起来您的
旧文件名
字符串包含引号,这是个问题。你能看看吗?不。。。我只传递逗号分隔的名称。上面的查询是删除所有行。什么是旧文件名?数组还是字符串?需要的是数组,而不是字符串。即使有r行,也不会删除任何行。这仅适用于OldFileName是字符串数组的情况。即使有r行,也不会删除任何行。这仅适用于OldFileName是字符串数组的情况。什么是OldFileName?数组还是字符串?@DenysSéguret它是一个以逗号分隔的值,而不是表单。好的,它应该是一个数组。请参阅更新的答案。旧文件名是什么?数组还是字符串?@DenysSéguret它是一个以逗号分隔的值,而不是表单。好的,它应该是一个数组。请参阅更新的答案。