2015-08-09 5 views
-1

У меня есть следующий запрос вставки:NodeJs - MySQL ошибка вставки

connection.query('INSERT INTO `items` (`gameID`, `userID`, `bidID`, `value`, `imageUrl`, `itemName`) VALUES (' + gameID + ', 8, ' + rows.insertId + ', 3, https://steamcommunity-a.akamaihd.net/economy/image/class/730/' + ourItems[i].classid + '/150fx125f, ' + ourItems[i].market_name + ')', function(err, rows, fields) { 
     if (err) throw err; 
}); 

Я однако получаю следующее сообщение об ошибке:

enter image description here

Есть идеи?

ответ

0

Вы должны работать на ваших строк и сцеплений:

connection.query("INSERT INTO `items` (`gameID`, `userID`, `bidID`, `value`, `imageUrl`, `itemName`) 
    VALUES ('" + gameID + "', 
     8, 
     '" + rows.insertId + "', 
     3, 
     'https://steamcommunity-a.akamaihd.net/economy/image/class/730/" + ourItems[i].classid + "/150fx125f', 
     '" + ourItems[i].market_name + "' 
    )", function(err, rows, fields) { 
    if (err) throw err; 
}); 

Это должно быть синтаксически правильным.

0

Вы никогда не должны создавать запросы, используя такую ​​конкатенацию. Вы, скорее всего, попадете в запрос, который может сломаться в будущем или даже откроет возможность для SQL-инъекции.

Если вы используете mysql модуль, то вы должны подумать над использованием функции побега, которые встроены в комплекте с модулем (Escaping query values):

connection.query('INSERT INTO `items` SET ?', 
     { 
     gameID: gameID, 
     userID: 8, 
     /* ... */ 
     imageUrl: 'https://steamcommunity-a.akamaihd.net/economy/image/class/730/' + ourItems[i].classid + '/150fx125f' 
     /* ... */ 
     }, function(err, rows, fields) { 
      if (err) throw err; 
     }); 
Смежные вопросы