@nollo

Как вставить json в mysql?

При добавлении массива преобразованного в строку к базе данных, сервер слетает. Сервер делается на Node.js.
Вот примерный код:
T[0]=1;
T[1]=2;
T[2]="3";
T[3]=4;
T[4]="5";
T=JSON.stringify(T);
connection.query('INSERT INTO `tasks` (`login`,`description`,`type`,`time`) VALUES ("'+req.body.login+'","'+T+'","'+"3"+'","'+st+'")');

Как можно исправить эту ошибку?
  • Вопрос задан
  • 1063 просмотра
Решения вопроса 1
Staltec
@Staltec
Node.js разработчик
0) Строку SQL запроса лучше обрамлять двойными кавычками, чтобы спокойно использовать одинарные кавычки внутри запроса для обозначения текстовых констант.

1) Изучите документацию по модулю который используете, там всё описано подробно и доступно.

2) Не вставляйте параметры напрямую в запрос. Никогда.

var T = [1, 2, '3', 4, 5];
connection.query("INSERT INTO `tasks` SET ?", {
  login: req.body.login,
  description: JSON.stringify(T),
  type: 3,
  time: new Date()
}, function(err) {
  if (err) throw err;
});

UPD: а можно даже так
var T = [1, 2, '3', 4, 5];
connection.query("INSERT INTO ?? SET ?", [
  'tasks', 
  {
    login: req.body.login,
    description: JSON.stringify(T),
    type: 3,
    time: new Date()
  }
], function(err) {
  if (err) throw err;
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@mayken
"'+"3"+'" - возможно тут крадется ошибка!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы