nodejs mysql查询没有

时间:2014-08-06 09:59:43

标签: mysql node.js

我想检查表中是否存在某个日期,如果不存在,我想要插入它。我已经在其他项目中完成了这项工作并且它有效,但现在我不知道它为什么不起作用。

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

[..]

connection.query('SELECT id FROM users [...]', function(err, results) {
    if (err) {
         throw err;
    } else if (results.length==1) {
         callback(null, results[0].id);
    } else {
         console.log('before insert');
         connection.query('INSERT INTO users SET ?', user, function(err, result) {
             console.log('insert');
             if (err) throw err;
         });
    }
});

使用INSERT的查询不起作用,但是如果我从SELECT查询中获取该查询,则它可以正常工作。 无论是INSERT还是其他查询都无关紧要。 在控制台中我只看到:'在插入'并没有错误。 这个查询是在一个循环中。

1 个答案:

答案 0 :(得分:2)

您在insert语句中有语法错误,它必须是:

 connection.query('INSERT INTO users (`id`) VALUES (?)', user, function(err, result) {
     console.log('insert');
     if (err) throw err;
 });

您还可以使用INSERT IGNORE语法优化代码以仅运行单个查询。如果记录已经存在,MySQL将忽略插入,而不会给出任何错误。但您的字段id必须设置为primary key

优化后,代码如下:

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

[..]
connection.query('INSERT IGNORE INTO users (`id`) VALUES (?)', user, function(err, results) {
    if (err) {
         throw err;
    } else {
         callback(null, user);
    }
});