Node.js Mysql Вставить объект с помощью дубликата On

#mysql #node.js

#mysql #node.js

Вопрос:

Как этот запрос будет правильным?

 let newUser = {
    user_id:'123456',
    user_name:'someone'
    }

con.query('INSERT INTO users SET ? ON DUPLICATE KEY UPDATE ?', newUser, (err,rows) => {
        if(err) throw err;
    });
  

На данный момент я получаю синтаксическую ошибку после ОБНОВЛЕНИЯ

Редактировать

 Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?' at line 1


 sql: "INSERT INTO users SET `user_id` = '', `user_name` = '' ON DUPLICATE KEY UPDATE ?"
  

СТРУКТУРА ТАБЛИЦЫ

 DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_Id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  `user_name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`,`user_Id`)
) ENGINE=InnoDB AUTO_INCREMENT=86 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
  

Комментарии:

1. поделитесь полным журналом ошибок, и запрос генерирует

2. Отредактированные значения пусты, потому что я удалил настоящие здесь

Ответ №1:

Количество вопросительных знаков должно быть равно размеру массива. Вы должны передать 2 параметра

 let newUser = {
    user_id:'123456',
    user_name:'someone'
    }

con.query('INSERT INTO users SET ? ON DUPLICATE KEY UPDATE ?', [newUser, newUser], (err,rows) => {
        if(err) throw err;
    });
  

Комментарии:

1. con.query(‘ВСТАВИТЬ В НАБОР пользователей? ПРИ ОБНОВЛЕНИИ ДУБЛИКАТА КЛЮЧА?’, user, user (ошибка, строки) => { ^^^^^^^^^^^^^^ SyntaxError: Неверно сформированный список параметров функции со стрелкой

2. [newUser, newUser] является параметром массива con. запрос имеет 3 параметра 1. запрос, 2. входные значения, 3. обратный вызов

3. Окей понял это до сих пор 🙂 но когда я теперь меняю имя_пользователя, он создает новую запись. Я хочу только, чтобы в моей таблице были ссылки с идентификатором пользователя

4. И теперь каждый раз создается новая запись … все еще, когда она имеет те же значения

5. проверьте с primary key unique key помощью индексов и ON DUPLICATE , которые проверяют наличие этих ключей