Mysql Update с помощью переменных

155
10 января 2019, 18:20

как реализовать следующий 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();
                       });
                   }
Answer 1

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)
})
Answer 2

В 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, ....);
READ ALSO
Как убрать рамку для button/input? [закрыт]

Как убрать рамку для button/input? [закрыт]

Рылся в интернете находил много всякой информации на мою тему, но ничего из найденного не помогаетМожет вы поможете

150
Как выполнить js код введенный через input?

Как выполнить js код введенный через input?

Вообщем, у меня есть кнопка и поле для ввода:

130
Можно ли опустить border?

Можно ли опустить border?

Надо чтобы цифра стояла прямо напротив бордера блока, возможно ли как то опустить на пару пикселей подчеркивания или надо делать отдельный...

188