Хорошо, поэтому я извлек некоторые значения в Excel с помощью пакета npm 'xlsx', и я хочу выполнить запрос MySql с отформатированным результатом.
Извлечение в Excel
let wb= xlsx.readFile(filePath); //GET WORKBOOK
let ws= wb.Sheets[wb.SheetNames[0]]; //SELECT THE FIRST SHEET IN THE ARRAY
let data= xlsx.utils.sheet_to_json(ws); //CONVERT DATA TO JSON OBJECT
let s =''; //CREATE VARIABLE TO HOLD FORMATTED STRING
for(let i=0; i<data.length; i++){
s+= "'" + data[i].id +"',"; //FORMAT OBJECT TO STRING
}
let fullString= s.substr(0, s.length-1); //STORE FORMATED STRING IN VARIABLE REMOVING FINAL COMMA (,)
Форматированная строка выглядит так:
'2019-0027178','2019-0027179','2019-0027180','2019-0027181','2019-0027182','2019-0027183'
Запрос MySql выглядит так:
SELECT name, email, phone FROM persons WHERE id IN (?),
[fullString]
Что ожидается:
Объект json, содержащий запрошенную информацию, например:
[{name: "John", email: "john.doe@email.com", phone: "123456789"}, ... ]
Фактический результат:
Пустой массиввот так:
[]
Расследование и мысли
Я обнаружил, что в строку запроса добавлялись пометки:
... WHERE id IN (`'2019-0027178','2019-0027179','2019-0027180','2019-0027181','2019-0027182','2019-0027183'`)
Актуальный актуальный основной вопрос:
Есть ли что-то, что я делаю не так или есть правильный способ сделать это?
РЕДАКТИРОВАТЬ!
Так что за один вопросительный знак т.е. ... WHERE id in (?)
, я получаю пустой объект, как указано выше. Но для двух вопросительных знаков т.е. ... WHERE id IN (??)
, я получаю эту ошибку:
{
"code": "ER_BAD_FIELD_ERROR",
"errno": 1054,
"sqlMessage": "Unknown column ''2019-0027178','2019-0027179','2019-0027180','2019-0027181','2019-0027182','2019-0027183' in 'where clause'",
"sqlState": "42S22",
"index": 0,
"sql": "SELECT name, email, phone FROM persons WHERE id IN (`'2019-0027178','2019-0027179','2019-0027180','2019-0027181','2019-0027182','2019-0027183'`)"
}