update tutorial query nodejs node inner createconnection mysql node.js

tutorial - Problemas de sintaxis de consultas mysql de Node.js ACTUALIZACIÓN DÓNDE



nodejs mysql npm (4)

Esto es lo que funcionó para mí.

var records = [name,email,adhar,ROLE,NOTES,REQUESTFORSUPPLIER,PASSWORD,LOCATION,CREATEDBY,CREATEDON,MODIFIEDBY,MODIFIEDON,mobile]; var sql="UPDATE flavica_user SET Name=?,EMAIL=?,AADHAR=?,ROLE=?,NOTES=?,REQUESTFORSUPPLIER=?,PASSWORD=?,LOCATION=?,CREATEDBY=?,CREATEDON=?,MODIFIEDBY=?,MODIFIEDON=? WHERE USER_MOBILE=?" //var sql="UPDATE `flavica_user` SET ? WHERE ?"; //this sql updates flavica_user con.query(sql,records,(err,result)=>{ if(err){ res.json({ status:400, message:err }) } else{ res.json({ status:200, message:result }) } })

Intento actualizar alguna información en la base de datos MYSQL, pero no estoy seguro de cómo hacerlo en node.js. Este es el controlador mysql que estoy usando https://github.com/felixge/node-mysql

Lo que tengo hasta ahora

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

Todo funciona excepto ...

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

En PHP tendría esto ...

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

No estoy seguro de lo que estoy haciendo mal, pero estoy seguro de que el problema está aquí

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


La respuesta de ruakh no es del todo correcta, puedes usar el SET ? característica con otro ? .

La sintaxis es:

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


Puede utilizar una matriz de objetos:

connection.query(''UPDATE user SET ? WHERE ?'', [{ Name: name }, { UserId: userId }])


[ Nota (agregada 2016-04-29): Esta respuesta fue aceptada, pero resulta que hay una forma razonable de usar SET ? . Para más detalles, vea la respuesta de Bala Clark en esta misma página. —Ruakh ]

Desde el código de Connection.prototype.query() y Connection.createQuery() , queda claro que solo se puede pasar en un solo objeto de valores. ¿No veo dónde está el código para el SET ? especial SET ? el comportamiento está definido, claramente no en SqlString.formatQuery() , pero si usa SqlString.objectToValues() , ¿entonces no hay manera de usarlo junto con otro ? .

Creo que el mejor enfoque es simplemente prescindir del SET ? limpio SET ? característica, y escribir cualquiera de estos:

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

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

Pero si realmente quieres usar SET ? Supongo que podrías escribir esto:

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

que actualizaría tanto UserID como Name ; a menos que tenga un disparador, esto debería estar bien, ya que está actualizando UserID al valor que ya tenía de todos modos. Pero es un poco desconcertante, y no lo recomiendo.