node-mysql在查询中使用数组

时间:2013-12-29 18:05:18

标签: javascript mysql arrays node.js escaping

我正在尝试使用数组进行查询但是有一个解析错误。

a - 包含数组

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

conexao_bd.escape(a) - 转义数组

Ex: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));
    }
});

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

查询

时出错
conexao_bd.query("SELECT question, answer FROM ", 

应该是

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

答案 2 :(得分:1)

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

  

嵌套数组转换为分组列表(对于批量插入),例如[[' a',' b'],[' c'' d']]变成了(' a&# 39;,' 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));
 }
});