如何在函数中传递mysql查询并获得结果

时间:2018-08-13 08:28:54

标签: javascript mysql node.js

你好,我有数据库和查询写在一个模块中,我正在从主类中调用该模块。我想要的是在函数中传递查询并获得结果。这是我到目前为止所做的

database.js

var pool  = mysql.createPool({
    host     : 'localhost',
    user     : 'xxxx',
    password : 'xxx',
    database : 'xxx'


});

exports.executeQuery=function(query,callback){
    pool.getConnection(function(err,connection){
        if (err) {
            console.log("error comes " + err);
            callback(true);
            return;
        }
        connection.query(query,function(err,results){
            connection.release();
            if(!err) {
                console.log("no error");

                callback(false,{rows: results});
            }
            // check null for results here
        });
        connection.on('error', function(err) {
            callback(true);
            return;
        });
    });
};

在我的主要班级

 var db = require('./database');
 var user_id = 5
 var query = "SELECT * FROM contacts  WHERE user_id = ?", user_id;
 db.executeQuery(query, function(r,contact_details) {
    console.log("success");          
    console.log(contact_details);
 });

它不起作用。它甚至不进入函数内部,也不输出success字符串。但是如果我要查询

var query = "SELECT * FROM contacts";

这将起作用。但是我想发送一个条件查询,由于条件查询,它不起作用。不知道如何发送条件查询,例如此查询

var query = "SELECT * FROM contacts  WHERE user_id = ?", user_id;

"SELECT count(*) as count FROM user_info  WHERE user_id = ? AND phone_no_1 = ? OR  phone_no_2 = ? OR  phone_no_3 = ?",[user_id,formatted_sms_no,formatted_sms_no,formatted_sms_no],

这类查询。任何帮助,将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

据我在模块mysql中看到的那样,您具有称为准备查询的功能。

因此,基本上,您应该传递queryparameters来执行,例如您的函数定义将类似于function(query, parameters, callback),并且在执行查询之前将使用mysql.format(query, parameters)