2013-07-30 2 views
0

я должен обновить строку в базе данных и написания этойОбновление запроса в 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) { 
    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

+0

«но я получаю синтаксическую ошибку» - ** какую ** синтаксическую ошибку вы получаете? – Quentin

+0

Ошибка: ER_PARSE_ERROR: У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с:: Profilo AND foto_id =: Foto 'в строке 1 – Barno

ответ

0

o_voto_foto является объектом. Побег ищет массив. Попробуйте использовать [o_voto_foto]

+0

dosen't работает, такая же ошибка, я хочу, как connection.query (' UPDATE prof_voto_foto SET punteggio =: punteggio WHERE profilo_id =: Profilo И foto_id =: Фото», [o_voto_foto] – Barno

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

Это именно то, что будет делать –

+0

dosen't работает, такая же ошибка Для вставки не проблема – Barno

+1

не видеть, что мой обновленный пост –

Смежные вопросы