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.