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

标签 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 ...");    
}
});

最佳答案

您的第一个条件测试 err.fatal。 但是,如果查询返回一个 SQL 错误,如 ER_NO_SUCH_TABLE,则错误对象没有致命属性。

{ [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) {
       //...
   }
);

关于mysql - Node JS MySQL - 插入数据..数据库中没有行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36641371/

相关文章:

php - 如何在 CakePHP Controller 中获取格式化的 JSON 输出

mysql - 使用 ARC 从 Objective-C 项目访问 MySQL 服务器

MySQL REPLACE 不起作用

node.js - 如何在 Heroku 上使用 Strongloop 部署 Node.js 应用程序?

Java 服务器和 PostgreSQL 连接

php - 我是否需要联接才能从此表中检索信息?

javascript - 如何在 passport-twitter 策略中使用 session 变量 req.user

mysql - mariadb插入-sql注入(inject)-错误

Java MySQL 不连接到其他服务器

android - 问题 : Android's isConnected() used to get current state of WiFi often returns false even when the device is connected