Похоже, вы пытаетесь вставить computerName
непосредственно в инструкцию SQL. Как минимум, вы должны были бы написать что-то вроде
connection.query("SELECT box_id, longestDimension from box where longestDimension != '' AND LOWER(box_id) = LOWER('" + computerName + "')", function(err, rows, fields) {
Но вы должны избежать значение computerName
. Вы не знаете, какое значение оно может содержать.
connection.query("SELECT box_id, longestDimension from box where longestDimension != '' AND LOWER(box_id) = LOWER('" + connection.escape(computerName) + "')", function(err, rows, fields) {
Но лучший способ сделать это с? замена:
connection.query("SELECT box_id, longestDimension from box where longestDimension != '' AND LOWER(box_id) = LOWER(?)", computerName, function(err, rows, fields) {
Кроме того, если параметры сортировки box_id столбца чувствительны к регистру, который, как правило, по умолчанию, то вы можете пропустить lowercasing значения.
Я бы написать это, для удобства чтения
let sql = "SELECT box_id, longestDimension FROM box WHERE longestDimension != '' AND box_id = ?";
connection.query(sql, computerName, function(err, rows, fields) {
Или, если ваша версия узла поддерживает литералы шаблона
let sql = `SELECT box_id, longestDimension
FROM box
WHERE longestDimension != ''
AND box_id = ?`;
connection.query(sql, computerName, function(err, rows, fields) {
Если у вас есть несколько переменных, есть два способа сделать это: с объект или массив. Метод
Объект:
let payload = {
box_id: "Johannesburg",
longestDimension: 12.4
};
let sql = 'INSERT INTO box SET ?';
connection.query(sql, payload, function(err, rows, fields) {
});
метод Массив:
let computerName = "Johannesburg";
let longestDimension = 12.4;
let sql = 'INSERT INTO box SET box_id = ?, longestDimension = ?';
// alternative, equivalent SQL statement:
// let sql = 'INSERT INTO box (box_id, longestDimension) VALUES (?, ?)';
connection.query(sql, [ computerName, longestDimension ], function(err, rows, fields) {
});
Вы можете даже объединить их
let payload = {
box_id: "Johannesburg",
longestDimension: 12.4
};
let boxName = "Box A";
let sql = 'UPDATE box SET ? WHERE box_name = ?';
connection.query(sql, [ payload, boxName ], function(err, rows, fields) {
});
В этом последнем примере объект полезной нагрузки заменяется на первый ?
и переменная boxName заменяется на вторую ?
,
Зачем вам удаляться сообщение об ошибке, если ваш запрос выполняется? Опубликовать точную ошибку – Shaharyar
Точной ошибкой, которую я получаю, является Ошибка при выполнении запроса. – John
Не могли бы вы опубликовать весь файл или соответствующую часть обработки соединения mysql. Существует несколько возможных проблем. В основном причиной является асинхронное поведение узла. Итак, когда вы закрываете соединение? Когда процесс заканчивается. Может быть, запрос не завершен, когда процесс заканчивается? – Felix