繁体   English   中英

node-mysql 在查询中使用数组

[英]node-mysql Using array in query

我正在尝试使用数组进行查询,但出现解析错误。

a - 包含一个数组

例如:[ 7, 26, 87, 65, 86, 23, 63, 69, 44, 61, 8, 79, 47, 88, 15, 17 ]

conexao_bd.escape(a) - 转义数组

例如:7、26、87、65、86、23、63、69、44、61、8、79、47、88、15、17

它需要采用这种格式(7, 26, 87, 65, 86, 23, 63, 69, 44, 61, 8, 79, 47, 88, 15, 17),所以我可以在查询中使用它。 任何帮助如何更改格式?

代码

conexao_bd.query("SELECT question, answer FROM ", conexao_bd.escape(tipo) + " WHERE id IN " + conexao_bd.escape(a) ,function(err, rows){

    if(err) console.log("Erro na query questions: "+err);
    else{
        perguntas.questions.push(rows);
        console.log(JSON.stringify(perguntas));
    }
});

查看 Array.join() 以将其作为字符串返回。 这是一个基本的 javascript 问题,与节点无关。

我实际上找到了正确的答案,包括转义(以防止 SQL 注入):

嵌套数组变成分组列表(用于批量插入),例如 [['a', 'b'], ['c', 'd']] 变成 ('a', 'b'), ('c ', 'd')

所以正确的方法是:

conexao_bd.query("SELECT question, answer FROM ? WHERE id IN ?",[tipo,[a]],function(err, rows){

  if(err) 
     console.log("Erro na query questions: "+err);
  else{
    perguntas.questions.push(rows);
    console.log(JSON.stringify(perguntas));
 }
});

查询有错误

conexao_bd.query("SELECT question, answer FROM ", 

应该是

conexao_bd.query("SELECT question, answer FROM "+

暂无
暂无

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

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