INSERT INTO与node-mysql失败 – variables始终为NULL

我正在使用MySql和node.js

我有这个查询,它不起作用,MySQL中的temp1是一致的NULL:

var queryTemp1 = { tid: '1', temp: temp1, timestamp: myDate }; con.query('INSERT INTO temps SET ?', queryTemp1, function(err,res){ if(err) throw err; console.log('Last insert ID:', res.insertId); }); 

temp1是浮动我想 – 我可以打印它,一切都OK:

 var temp1 = parseFloat(stdout); var temp1 = temp1/1000 var temp1 = (temp1.toFixed(2)); 

我的桌子有一列:

 +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | tid | smallint(6) | YES | | NULL | | | timestamp | datetime | YES | | NULL | | | temp | float(4,2) | YES | | NULL | | +-----------+-------------+------+-----+---------+-------+ 

我究竟做错了什么?

       

网上收集的解决方案 "INSERT INTO与node-mysql失败 – variables始终为NULL"

那INSERT语句看起来不正确…

尝试这个:

 // BIND PARAMS var queryTemp1 = { tid: '1' , temp: temp1 , timestamp: myDate }; // VARIABLE FOR SQL var sql = "INSERT INTO temps(tid, temp, timestamp)\ VALUES (:tid, :temp, :timestamp)"; // DATABASE con.query( sql , queryTemp1 , function(err, res) { if(err) throw err; console.log('Last insert ID:', res.insertId); }); 

tid目前是一个string,它正在寻找一个tinyint ,试着拿出单引号,看看是否有火灾。

还要确保你的date时间是一个date时间不是一个实际的时间戳,即像2014-01-01 00:00:00而不是1231232131

编辑:你的代码在这里可以清理值,

 var temp1 = parseFloat(stdout); var temp1 = temp1/1000 var temp1 = (temp1.toFixed(2)); 

如果您需要更新temp1,请将var取出。

 var temp1 = parseFloat(stdout); temp1 = temp1/1000 temp1 = (temp1.toFixed(2)); 

这是完整的代码:

  var mysql = require("mysql"); var child_process = require('child_process'); var temp1; // First you need to create a connection to the db var con = mysql.createConnection({ host: "localhost", user: "user", password: "password", database: "database" }); con.connect(function(err){ if(err){ console.log('Error connecting to Db'); return; } console.log('Connection established'); }); console.log(temp1); child_process.exec("sudo -u www-data grep -a 't=' /var/www/temp/w1_slave | cut -f2 -d=", function (err, stdout, stderr){ if (err) { console.log("child processes failed with error code: " + err.code); } console.log(stdout); temp1 = parseFloat(stdout); temp1 = temp1/1000 temp1 = (temp1.toFixed(2)); }); var moment = require('moment'); var now = moment(); myDate = moment(now.format('YYYY/MM/DD HH:mm:ss')).format("YYYY-MM-DD HH:mm:ss"); var queryTemp1 = [1, temp1]; // VARIABLE FOR SQL var sql = "INSERT INTO temps(tid, temp) VALUES (?)"; // DATABASE con.query(sql , queryTemp1 , function(err, res) { if(err){console.log(queryTemp1); throw err;} console.log('Last insert ID:', res.insertId); }); console.log(queryTemp1);