gpt4 book ai didi

mysql - nodejs mysql查询没有

转载 作者:行者123 更新时间:2023-11-29 06:35:29 24 4
gpt4 key购买 nike

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

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 还是其他查询。在控制台中,我只看到:“插入前”并且没有错误。此查询处于循环中。

最佳答案

你在插入语句中有语法错误,它必须是:

 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);
}
});

关于mysql - nodejs mysql查询没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25157411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com