我有陈述:
INSERT INTO infotbl(name, phone) VALUES('Alex', '9999999');
并更新它:
UPDATE infotbl SET name = 'Alex Johnes', phone = '999 34356063' WHERE id = 1;
然后删除:
DELETE FROM infotbl WHERE id = 1;
我已成功插入,当我更新和删除行时,MySQL已发生变化。但我在Node中的代码返回受影响的行= 0.为什么?在Node中有我的更新和删除功能:
function deleteCustomer (id, callback) {
db.connection.query("DELETE FROM infotbl WHERE id=?", id, (err, result) => {
if (err) throw err;
if (result.affectedRows > 0)
callback(true);
else
callback(false);
});
};
并更新功能
function updateCustomer(id, name, phone, callback) {
db.connection.query("UPDATE infotbl SET name = ?, phone = ? WHERE id = ?;", [name, phone, id], (err, result) => {
if (err) throw err;
if (result.affectedRows > 0)
callback(true);
else
callback(false);
});
}
为什么节点在数据库成功执行后返回0受影响的行?
答案 0 :(得分:1)
最可能的解释是没有行满足UPDATE和DELETE语句中的条件。也就是说,没有id
值等于1
的行。
如果条件与一行或多行匹配,UPDATE可能会影响零行,但应用于行的更改会导致"无更改" ...即,正在修改的列已具有值被分配。
成功执行但影响零行的UPDATE或DELETE仍被视为成功。