Node JS MySQL - 插入数据..没有数据库中的行更新

时间:2016-04-15 07:55:39

标签: mysql node.js connection

我正在尝试通过Node JS在数据库中插入数据。代码工作正常,显示“记录已插入”消息但在MySQL中没有更新行。

这是我执行插入操作的代码

connection.query('SELECT * FROM menu WHERE item_name=\'' + userResponces[2].toLowerCase() + '\'', function(err, rows){
        if (err) throw err;
        else{
            i_id = rows[0].item_id;
            console.log('i_id ' + i_id);


    connection.query('INSERT INTO customer VALUES(default,' + c_name + ',' + c_addr + ',' + c_mob + ')', function(err, res){
        if(err.fatal){
            console.log(''+err.message);
        } 
        else{
            console.log("Record Inserted");


    connection.query('SELECT MAX(customer_id) AS c_id FROM customer', function(err, res){
        if(err) throw err;
        else{
            c_id = parseInt(res[0].c_id) + 1;
            console.log('c_id ' + c_id);


    console.log(i_id + ' ' + c_id + ' ' + qty);
    connection.query('INSERT INTO order1() VALUES(default,' + i_id + ',' + c_id + ',' + qty + ',1)', function(err, res){
        if(err) throw err;
        else
            console.log("Record Inserted");
    });
            }
    });
        }
    });    
            }
    });

在上面的代码中SELECT语句工作正常,所以连接中无疑没有错误。这仍然是连接。

var mysql = require('mysql');
 var connection = mysql.createConnection({
   host     : 'localhost',
   user     : 'nodeuser',
   password : 'password',
   database : 'foodorder'
 });

connection.connect(function(err){
if(!err) {
    console.log("Database is connected ...");    
} else {
    console.log("Error connecting database ...");    
}
});

1 个答案:

答案 0 :(得分:0)

你首先是条件测试err.fatal。 但是如果查询返回类似ER_NO_SUCH_TABLE的SQL错误,则错误的对象不具有致命属性。

{ [Error: ER_NO_SUCH_TABLE: Table 'bad_table_name' doesn't exist]
  code: 'ER_NO_SUCH_TABLE',
  errno: 1146,
  sqlState: '42S02',
  index: 0 }

所以,在这里,您应该在err而非err.fatal

上进行测试
connection.query('INSERT INTO customer VALUES(default,' + c_name + ',' + c_addr + ',' + c_mob + ')', function(err, res){
    if (err){
        return console.log(err);
    } 
    else{
        console.log("Record Inserted");
    // ...
});

顺便说一句,请考虑escaping values

connection.query(
   'INSERT INTO customer VALUES(default, ?, ?, ?)',
   [c_name, c_addr, c_mob],
   function(err, res) {
       //...
   }
);