0

我必须更新数据库中的一行并写这个

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) {

我使用这个外部库 https://github.com/felixge/node-mysql

4

2 回答 2

3

这样做肯定会奏效:

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) {

仅当您注册自定义 queryFormat 时,替换以冒号开头的与参数对象中的条目匹配的查询中的参数才有效。请参见下面的示例。不能混吗?和以冒号开头的参数。

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) {
于 2013-07-30T16:14:00.323 回答
0

o_voto_foto 是一个对象。逃逸寻找一个数组。尝试使用 [o_voto_foto]

于 2013-07-30T16:05:19.970 回答