Javascript 更新node.js中的查询

Javascript 更新node.js中的查询,javascript,mysql,node.js,Javascript,Mysql,Node.js,我必须更新数据库中的一行并编写此 var o_voto_foto = { Profilo: profilo, Foto: data.id_foto_votata, punteggio: data.voto, }; connection.query('UPDATE prof_voto_foto SET ? WHERE profilo_id = :Profilo AND foto_id = :Foto',o_voto_foto, function(error, rows)

我必须更新数据库中的一行并编写此

var o_voto_foto = {
    Profilo: profilo,
    Foto: data.id_foto_votata,
    punteggio: data.voto,
};

connection.query('UPDATE prof_voto_foto SET ? WHERE profilo_id = :Profilo AND foto_id = :Foto',o_voto_foto, function(error, rows) {
    if (error) {
        var err = "Error on UPDATE 'votoFotoFancybox': " + error;
        console.error(err);
        throw err;
    }
    connection.end();

    callback();

});
但是我有一个语法错误。 但是,如果使用此语法完成查询

connection.query('UPDATE prof_voto_foto SET punteggio = '+data.voto+' WHERE profilo_id = '+profilo+' AND foto_id = '+data.id_foto_votata,function(error, rows) {
我使用这个外部库
o_voto_foto是一个对象。逃生舱寻找一个阵列。尝试使用[o_voto_foto]

o_voto_foto是一个对象。逃生舱寻找一个阵列。尝试使用[o_voto_foto]

这样做肯定会奏效:

var o_voto_foto = {
    Profilo: profilo,
    Foto: data.id_foto_votata,
    punteggio: data.voto,
};

var params = [o_voto_foto.punteggio, o_voto_foto.Profilo, o_voto_foto.Foto ];

connection.query('UPDATE prof_voto_foto SET punteggio = ? WHERE profilo_id = ? AND foto_id = ? ', params, function(error, rows) {
仅当您注册自定义查询格式时,才能使用与参数对象中的条目匹配的冒号替换查询中的参数。请参见下面的示例。你不能混在一起?以及以冒号开头的参数

connection.config.queryFormat = function (query, values) {
  if (!values) return query;
  return query.replace(/\:(\w+)/g, function (txt, key) {
    if (values.hasOwnProperty(key)) {
      return this.escape(values[key]);
    }
    return txt;
  }.bind(this));
};

var params2 = {
punteggio : '',
profilo_id : '',
photo_id : ''
};

connection.query('UPDATE prof_voto_foto SET punteggio = :punteggio WHERE profilo_id = :profilo_id AND foto_id = :photo_id ', params2, function(error, rows) {

这样做肯定会奏效:

var o_voto_foto = {
    Profilo: profilo,
    Foto: data.id_foto_votata,
    punteggio: data.voto,
};

var params = [o_voto_foto.punteggio, o_voto_foto.Profilo, o_voto_foto.Foto ];

connection.query('UPDATE prof_voto_foto SET punteggio = ? WHERE profilo_id = ? AND foto_id = ? ', params, function(error, rows) {
仅当您注册自定义查询格式时,才能使用与参数对象中的条目匹配的冒号替换查询中的参数。请参见下面的示例。你不能混在一起?以及以冒号开头的参数

connection.config.queryFormat = function (query, values) {
  if (!values) return query;
  return query.replace(/\:(\w+)/g, function (txt, key) {
    if (values.hasOwnProperty(key)) {
      return this.escape(values[key]);
    }
    return txt;
  }.bind(this));
};

var params2 = {
punteggio : '',
profilo_id : '',
photo_id : ''
};

connection.query('UPDATE prof_voto_foto SET punteggio = :punteggio WHERE profilo_id = :profilo_id AND foto_id = :photo_id ', params2, function(error, rows) {

“但是我得到了一个语法错误”-你得到了什么语法错误?错误:ER_PARSE_错误:你的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以了解要使用的正确语法:Profilo和foto_id=:foto'在第1行“但是我得到了一个语法错误”-您得到了什么语法错误?错误:ER_PARSE_错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行中使用的正确语法:Profilo和foto_id=:foto,这正是您想要的?will do.connection.query('UPDATE prof_voto_foto SET punteggio=?,created=?WHERE profilo_id=?AND foto_id=?',[data.voto,created,profilo,data.id_foto_votata],函数(错误,行){@Barno你现在开始工作了吗?我想你发布的查询正在工作。如果没有,你现在得到的错误是什么?这正是?将要做的。connection.query('updateprof_voto_foto SET punteggio=?,created=?WHERE profilo_id=?AND foto_id=?,[data.voto,created,profilo,data.id_foto_votata],函数(错误,行){@Barno你现在能用了吗?我想你发布的查询能用了。如果不能,你现在会出现什么错误?不起作用,同样的错误我会尝试连接。查询('updateprof_voto_foto SET punteggio=:punteggio其中profilo_id=:profilo和foto_id=:foto',[o_voto_foto]dosen不起作用,同样的错误我喜欢连接。query(“更新prof_voto_foto SET punteggio=:punteggio,其中profilo_id=:profilo和foto_id=:foto',[o_voto_foto]