你好,我有数据库和查询写在一个模块中,我正在从主类中调用该模块。我想要的是在函数中传递查询并获得结果。这是我到目前为止所做的
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],
这类查询。任何帮助,将不胜感激。
谢谢
答案 0 :(得分:0)
据我在模块mysql中看到的那样,您具有称为准备查询的功能。
因此,基本上,您应该传递query
和parameters
来执行,例如您的函数定义将类似于function(query, parameters, callback)
,并且在执行查询之前将使用mysql.format(query, parameters)
。