как реализовать следующий mysql запрос? var sql = "UPDATE some_table SET ? = ? WHERE id = ?";
Я сделал так, но не заработало....
con.query(sql, [some_set_key, some_set_value, some_id_value], (err, res) => { // code })
var update_user_data = JSON.parse(chunk);
for (var key in update_user_data) {
var set_key = key, set_value = "";
if (key == "firstName") {
set_value = update_user_data["firstName"]
};
if (key == "lastName") {
set_value = update_user_data["lastName"]
};
if (key == "mail") {
set_value = update_user_data["mail"]
};
if (key == "password") {
set_value = update_user_data["password"]
};
var whering = baseData[0].id;
var update_all_users_data_sql = "UPDATE slide_tab SET ? = ? WHERE id = ?"
console.log(baseData[0].id);
con.query(update_all_users_data_sql, [set_key, set_value], [wheringId], (err, result) => {
if (err) throw err;
console.log("USER datas have updated");
res.end();
});
}
query() метод - 1-ый аргумент - строка с запросом, второй - колбэк функция
То есть:
con.query("SELECT foo FROM bar", (err, res) => {
console.log(res)
})
В вашем случае можно:
con.query({
sql: update_all_users_data_sql
},
[set_key, set_value, wheringId],
(err, res) => {
console.log(res)
})
В SQL нельзя передавать имена колонок (так же как и других объектов БД) в виде переменных. Они должны быть указаны непосредственно в тексте запроса. Поэтому надо построить строку запроса самостоятельно так, что бы в ней оказались нужные имена, в таком виде update table set x=?, y=? .... Я бы сделал это примерно так:
var names=[]; // Массив с именами полей (и плейсхолдерами, в виде "x=?")
var values=[]; // Массив значений для передачи в query
for (var key in ['firstName', 'lastName', 'mail', 'password']) {
if(update_user_data[key] !== undefined) {
names.push(key+'=?');
values.push(update_user_data[key]);
}
}
var update_all_users_data_sql = "UPDATE slide_tab SET " + names.join(',') + " WHERE id=?";
values.push(baseData[0].id); // Добавляем значение для where
con.query(update_all_users_data_sql, values, ....);
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости