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]