循环Javascript中的MySQL查询不起作用
我在这个循环中使用了闭包。但是它只能在控制台日志上打印正确的数据,并且sql查询不起作用。MySQL上插入的数据是循环的最后一个变量。 我想这是因为MySQL的编写速度。但我不知道如何修复它。有什么想法吗? 谢谢循环Javascript中的MySQL查询不起作用,javascript,node.js,loops,closures,Javascript,Node.js,Loops,Closures,我在这个循环中使用了闭包。但是它只能在控制台日志上打印正确的数据,并且sql查询不起作用。MySQL上插入的数据是循环的最后一个变量。 我想这是因为MySQL的编写速度。但我不知道如何修复它。有什么想法吗? 谢谢 module.exports=函数(回调){ queryGetForSend=“从图像中选择*,其中发送请求为NULL,发送请求不为NULL,并且年(中间时间)=年(curdate())和月(中间时间)=月(curdate())和(时间(中间时间)
module.exports=函数(回调){
queryGetForSend=“从图像中选择*,其中发送请求为NULL,发送请求不为NULL,并且年(中间时间)=年(curdate())和月(中间时间)=月(curdate())和(时间(中间时间)<(curtime()-15));”;
conn.query(queryGetForSend,函数(err,行,字段){
用于(一行){
if(行[i]。post_请求==“批准”){
结果结束=1
}否则{
结果结束=2
}
var fileID=rows[i].img_md5;
queryString=fileID+“=”+resultSend;
//请求url:“http://im-api1.webpurify.com/image_queue/results/?key="
var d=新日期();
Date.masks.default='YYYY-MM-DD hh:MM:ss';
sendTime=d.format();
(函数(查询字符串、发送时间){
querySent=“更新图像集发送请求=1,结果发送=”+queryString+”,发送时间=“+sendTime+”,其中发送请求为空,后发送请求不为空,年(中时间)=年(curdate())和月(中时间)=月(curdate())和时间(中时间)<(curtime()-15));
conn.query(querySent,函数(err,行,字段){
如果(错误)抛出错误;
控制台日志(“http://google.com?key=“+键+”&“+查询字符串);
});
})(查询字符串,发送时间);
(函数(查询字符串){
请求。获取(“http://google.com“+key+”&“+queryString,函数(err,res,body){
});
})(质询);
}
//回调(行);
});
};
两条建议:
- 避免SQL查询中的连接,请改用占位符或准备好的语句(如果您关心安全性的话)
- 使用
代替带有闭包的常规for循环,以避免意外使用for循环内设置的变量:array.forEach()
conn.query(queryGetForSend, function(err, rows, fields) { if (err) throw err; rows.forEach(function(row) { var resultSend; if (row.post_request == 'approve') { resultSend = 1 } else { resultSend = 2 } var fileID = row.img_md5; var queryString = fileID + '=' + resultSend; var d = new Date(); Date.masks.default = 'YYYY-MM-DD hh:mm:ss'; var sendTime = d.format(); var querySent = 'UPDATE image SET send_request=1, result_sent=?, send_time=? WHERE send_request IS NULL AND post_request IS NOT NULL AND year(moderate_time) = year(curdate()) AND month(moderate_time) = month(curdate()) AND (time(moderate_time) < (curtime() - 15));'; conn.query(querySent, [queryString, sendTime], function (err) { if (err) throw err; console.log('http://google.com?key=' + key + '&' + queryString); }); request.get('http://google.com?key=' + key + '&' + queryString, function(err, res, body) { }); }); });
conn.query(queryGetForSend,函数(err,行,字段){ 如果(错误)抛出错误; rows.forEach(函数(行){ var结果发现; 如果(row.post_请求=='approve'){ 结果结束=1 }否则{ 结果结束=2 } var fileID=row.img_md5; var queryString=fileID+'='+resultSend; var d=新日期(); Date.masks.default='YYYY-MM-DD hh:MM:ss'; var sendTime=d.format(); var querySent='UPDATE image SET send_request=1,result_sent=?,send_time=?其中send_request为NULL,post_request不为NULL,年份(中间时间)=年(curdate())和月(中间时间)=月(curdate())和时间(中间时间)<(curtime()-15)); conn.query(querySent,[queryString,sendTime],函数(err){ 如果(错误)抛出错误; console.log('http://google.com?key=“+键+”&“+查询字符串); }); 请求。获取('http://google.com?key=“+key+”&“+queryString,函数(err,res,body){ }); }); });
conn.query(queryGetForSend, function(err, rows, fields) {
if (err) throw err;
rows.forEach(function(row) {
var resultSend;
if (row.post_request == 'approve') {
resultSend = 1
} else {
resultSend = 2
}
var fileID = row.img_md5;
var queryString = fileID + '=' + resultSend;
var d = new Date();
Date.masks.default = 'YYYY-MM-DD hh:mm:ss';
var sendTime = d.format();
var querySent = 'UPDATE image SET send_request=1, result_sent=?, send_time=? WHERE send_request IS NULL AND post_request IS NOT NULL AND year(moderate_time) = year(curdate()) AND month(moderate_time) = month(curdate()) AND (time(moderate_time) < (curtime() - 15));';
conn.query(querySent, [queryString, sendTime], function (err) {
if (err) throw err;
console.log('http://google.com?key=' + key + '&' + queryString);
});
request.get('http://google.com?key=' + key + '&' + queryString, function(err, res, body) {
});
});
});