Как ОБНОВИТЬ 1 столбец в 1 строке, используя заполнители - PullRequest
1 голос
/ 09 апреля 2020

Мне нужно обновить 1 элемент в 1 строке таблицы базы данных в mysql, используя заполнители. Синтаксис, который я пытаюсь использовать:

"ОБНОВЛЕНИЕ таблицы SET SET column_name = newValue WHERE id = selectedID"

Я знаю имя таблицы и хочу выбрать строку для обновления, используя Я бы. Я хочу передать столбец column_name, newValue и selectedID, используя заполнители, поэтому я думаю, что оператор должен выглядеть следующим образом:

"UPDATE table SET ?? =? WHERE id =?", [{Column_name: newValue }, {id: selectedID}]

Вот мой код:

employeeToUpdate(columnToUpdate, newValue, employeeToUpdateId) {
    console.log("Updating employee information \n");
    // console.log('col: ' + columnToUpdate + "  newV: " + newValue + "  id: " + employeeToUpdateId);
    this.connection.query(
      // insert a new role with the given information
      // "UPDATE employee SET last_name = 'Johnson' WHERE id = 4"
      "UPDATE employee SET ?? = ? WHERE id = ?",
      [
        {
          columnToUpdate: newValue
        },
        {
          id: employeeToUpdateId
        }
      ]
    )
  }

Закомментированный console.log подтверждает, что переданные значения верны. Закомментированный оператор «UPDATE ...» работает для предоставленных значений.

Но это приводит к ошибке разбора. Есть лучший способ сделать это? Я не могу найти хорошую документацию, чтобы помочь мне.

1 Ответ

0 голосов
/ 09 апреля 2020

Я думаю, что второй параметр должен быть массивом. Я не смог его протестировать, но что-то вроде этого должно работать.

this.connection.query("UPDATE employee SET ?? = ?? WHERE id = ?", 
    [columnToUpdate,newValue,employeeToUpdateId], 
    function (error, results) {
             if (error){
             return console.error(error.message);
             }
             console.log('Rows affected:', results.affectedRows);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...