2017-07-24 49 views
0

我想在使用mysql的express框架中使用AND运算符来实现查询。如何在Express中使用mysql中的AND运算符

mysql query: select * from question where question_id = 1 AND answer =“apple”AND appkey =“1122”;

我想用express来实现上面的查询。我已经尝试了下面的查询。

req.getConnection(function(err,connection){ 


    var data = { 

     qid : input.questionid, 
     ansvalue : input.answervalue, 
     appid : input.appkey, 


    }; 
    console.log(data); 

    var query = connection.query('SELECT * FROM request_auth WHERE question_id = ?',[qid]'AND answer_description = ?',[ansvalue]'AND app_key = ?',[appid],function(err,rows) 
    { 

     if(query=='') 
      console.log("Error Selecting : %s ",err); 

     res.render('edit_customer',{page_title:"Edit Customers - Node.js",data:rows}); 


    }); 

但它是抛出错误qid没有定义。请给我这个解决方案。谢谢。

回答

2

你必须实际查询(用占位符)和占位符分隔参数(见第三个例子here):

connection.query('SELECT * FROM request_auth WHERE question_id = ? AND answer_description = ? AND app_key = ?', [qid, ansvalue, appid], ...) 

此外,要确保你调用connection.release()当查询完成(更info here)。

+0

根据字段类型的不同,answer_description和app_key不需要用''来包装,还是自动发生? answer_description ='?' – ChrisBint

+1

@ChrisBint是的,这将自动发生:) – robertklep

+0

@robertklep它的工作。感谢您的帮助。 –

1

我只是抛出一个潜在的快速修复,因为我之前没有使用过这个框架,但是您可能需要在使用变量之前添加空格,因为它似乎可能不会使用AND,因为它是把它看成一个长长的单词。