Попытка вставить JSON в MySQL с помощью Node.JS - PullRequest
0 голосов
/ 06 мая 2019

с использованием Node.JS У меня есть вывод JSON , полученный из вызова API.Я пытаюсь вставить этот JSON в MySQL , но получаю сообщение об ошибке:

"Ошибка: ER_PARSE_ERROR: у вас есть ошибка в синтаксисе SQL; проверьте руководствоэто соответствует вашей версии сервера MySQL для правильного синтаксиса для использования рядом с 'ANU' в строке 1 "

Почему он отклоняет запрос ввода и как я могу это исправить?

Кроме того, я бы предпочел включить несколько полей, таких как CountryName и CityName - как я могу это сделать?

При анализе файла JSONв node.JS console.log(typeof JSON) возвращает вывод [object Object]

Я думаю, что это вызывает ошибку выше, поскольку она не в правильном формате.

Node.JS извлечение:

//MySQL
let con = mysql.createConnection(config);
con.connect(function(err) {
  if (err) throw err;
  console.log("Connected to MySQL!");

  var sql = "INSERT INTO TEST1 (CountryName) VALUES ?";
  var values = obj.LocationsResponse.Country[1].CountryName;
      con.query(sql, values, function (err, result) {
      if (err) throw err;
      console.log("Number of records inserted: " + result.affectedRows);
});
});

JSON извлечение (я очистил, чтобы сократить его):

obj = {"LocationsResponse":
{"Country":[
{"CountryName":"United Arab Emirates","CountryCode":"AE","City":[{"CityName":"Abu Dhabi","CityCode":"AUH"},{"CityName":"Dubai","CityCode":"DXB"}]}
,
{"CountryName":"Antigua","CountryCode":"AG","City":{"CityName":"Antigua","CityCode":"ANU"}}
,
{"CountryName":"USA","CountryCode":"US","City":
[{"CityName":"Albuquerque","CityCode":"ABQ",{"CityName":"Albany","CityCode":"ALB",{"CityName":"Amarillo","CityCode":"AMA",
{"CityName":"Anchorage","CityCode":"ANC"
}}}}]} 
]}}

1 Ответ

0 голосов
/ 06 мая 2019

JSON не имеет ничего общего с этой ошибкой.

Вы неправильно указали синтаксис INSERT.

У вас есть:

INSERT INTO TEST1 (CountryName) VALUES ?

Вы должны иметь:

INSERT INTO TEST1 (CountryName) VALUES (?)

MySQL также поддерживает альтернативный синтаксис:

INSERT INTO TEST1 SET CountryName = ?

Прочтите https://dev.mysql.com/doc/en/insert.html, чтобы узнать больше о синтаксисе INSERT в MySQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...