MySQL查询语法问题

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (15)

我试图在MySQLDB中更新一些信息,但我不知道如何在node.js中使用它。这是我使用的MySQL驱动程序https://github.com/felixge/ode-MySQL

到目前为止我所拥有的

connection.query('SELECT * FROM users WHERE UserID = ?', [userId], function(err, results) {
if (results[0]) {
if (results[0].Name!=name) {
console.log(results[0].Name);
connection.query('UPDATE users SET ? WHERE UserID = ?', [userId], {Name: name});
}
console.log(results[0].UserID);
}
});

一切正常除了.

connection.query('UPDATE users SET ? WHERE UserID = ?', [userId], {Name: name});

在PHP里我会有这个.

mysql_query("UPDATE users SET Name='".$_GET["name"]."' WHERE UserID='".$row['UserID']."'");

我不知道我做错了什么,但我确信问题就在这里

connection.query('UPDATE users SET ? WHERE UserID = ?', [userId], {Name: name});
提问于
用户回答回答于

密码Connection.prototype.query()Connection.createQuery(),很明显,只能通过单株值对象。我看不出特辑的密码在哪里SET ?行为是定义的--显然不是在SqlString.formatQuery()-但如果它使用SqlString.objectToValues(),那么我想没有办法和另一个人一起使用它了?

我认为最好的方法就是不要再整洁了。SET ?特性,并编写以下任何一个:

connection.query('UPDATE users SET Name = ? WHERE UserID = ?', [name, userId])
connection.query('UPDATE users SET Name = :Name WHERE UserID = :UserID',
                     {UserID: userId, Name: name})

但如果你真的想用SET ?,我想你可以写这个:

connection.query('UPDATE users SET ? WHERE UserID = :UserID',
                     {UserID: userId, Name: name})

更新两个UserIDName,除非你有扳机,否则好吧,因为它在更新UserID它已经有了价值。但这有点令人不安,我不建议你这么做。

用户回答回答于

ruakh的答案并不完全正确,可以使用SET

语法是:

connection.query('UPDATE users SET ? WHERE UserID = ?', [{ Name: name }, userId])

扫码关注云+社区