Node.js mysql查询语法问题UPDATE WHERE

我试图更新MYSQL

DB中的某些信息,但是我不确定如何在node.js中使用它。这是我正在使用的mysql驱动程序https://github.com/felixge/node-

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

回答:

[ 这个答案已被接受,但事实证明,还有 就是 用合理的方式SET

?。有关详细信息,请参阅同一页面上的Bala Clark的答案。 —ruakh ]


从的代码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为它已经拥有的值。但这有点令人不安,我不建议这样做。

以上是 Node.js mysql查询语法问题UPDATE WHERE 的全部内容, 来源链接: utcz.com/qa/404458.html

回到顶部