我想检查表中是否存在某个日期,如果不存在,我想要插入它。我已经在其他项目中完成了这项工作并且它有效,但现在我不知道它为什么不起作用。
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还是其他查询都无关紧要。 在控制台中我只看到:'在插入'并没有错误。 这个查询是在一个循环中。
答案 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);
}
});