如何在MySQL中用不同的参数更新查询

环境

Node.js,MySQL(使用node-mysql library连接)

首先

我可以有one argument 'aaa'two arguments 'aaa' and 'bbb'

 UPDATE user SET email = 'aaa' WHERE uid = 'xxx'; UPDATE user SET email = 'aaa', password = 'bbb' WHERE uid = 'xxx'; 

我的问题

我怎么能用一个查询来克服上述情况? 像下面…

 var sql = "UPDATE user SET email = ?, password = ? WHERE uid = ?;" dbclient.query(sql, [email, password, uid], function (err, results) { ... }); 
  1. 如果defined两个参数,variablessql是:

     sql = "UPDATE user SET email = 'test@mail.com', password = 'abcd' WHERE uid = 1;"; 
  2. 如果某个参数undefined ,variablessql是:

     sql = "UPDATE user SET email = 'test@mail.com', password = password WHERE uid = 1;"; 

请阅读文档,特别是转义查询值部分。 node-mysql支持一些整洁的对象序列化的使用。

下面的例子应该是你想要的(它使用格式,但内部query()也是如此):

 var mysql = require( 'mysql' ); var credfull = { email: "a@exemple.com", password: "secret" }, crednopwd = { email: "a@exemple.com" }, whereclause = { uid: "blabla" }; console.log( mysql.format( 'UPDATE user SET ? WHERE ?', [credfull, whereclause]) ); // UPDATE user SET `email` = 'a@exemple.com', `password` = 'secret' WHERE `uid` = 'blabla' console.log( mysql.format( 'UPDATE user SET ? WHERE ?', [crednopwd, whereclause]) ); // UPDATE user SET `email` = 'a@exemple.com' WHERE `uid` = 'blabla' 

希望这可以帮助。