Здравствуйте, подскажите пожалуйста, почему не работает подготовленный запрос
const writeData = await getDataDB('INSERT INTO test (ownId, email, ip, category, productId) VALUES (?, ?, ?, ?, ?)', ["1212", "cds@sa.sa", "12.12.12", "test", "1"]);
Ошибка:
UnhandledPromiseRejectionWarning: 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
Но при этом если написать значения заранее
const writeData = await getDataDB('INSERT INTO test (ownId, email, ip, category, productId) VALUES ("12324", "as@sa.sa", "12.12", "test", "11")');
Все нормально работает.
P.S. Функция
const getDataDB = (q, p = '')=>{
return new Promise((resolve,reject)=>{
pool.query(q, [p], (err,result)=>{
if(err) reject(err);
resolve(result);
});
});
};
Также если я например делаю так:
const writeData = await getDataDB(`INSERT INTO test (ownId, email, ip, category, productId) VALUES ("123245", ${email}, "12.12", "test", "11")`);
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 '@ss.ss, "12.12", "test", "11")' at line 1
почта была в данном случае ss@ss.ss
Все равно ошибка
Подскажите пожалуйста, почему не работает вариант с плейсхолдерами? Я же вроде-бы правильно все делаю, в массив передаю значения, все дела