#javascript #html #node.js #ejs
#javascript #HTML #node.js #ejs
Вопрос:
Я пытаюсь отправить описание продукта со своей панели мониторинга в свою базу данных, однако всякий раз, когда я включаю » или » в описание, оно выдает ошибку The string constant beginning with "' )" does not have an ending string delimiter. SQLSTATE=42603
. Я понимаю, почему это происходит, но мне необходимо, чтобы они были там, так как в описаниях некоторых продуктов должно быть указано, 10" tall
, или 1' wide
, без изменения формата строки… есть ли способ обойти это?
интерфейс:
<fieldset>
<label for="bio">Description:</label>
<textarea id="bio" name="description" placeholder="Enter product desc..." style="border: 1px solid black" required></textarea>
</fieldset>
<button id="submitButton" type="submit">Submit</button>
внутренний код:
var size = req.query.size;
console.log(size);
var image_url = req.query.url;
//DB2 CONNETCTION FOR ADDING PRODUCTS
var addProducts =
"insert into PRODUCTS ( ITEM, DESCRIPTION, PRICE, SIZES, IMAGE ) VALUES ('"
req.query.item
"', '"
req.query.description
"', '"
req.query.price
"', '"
size
"', '"
image_url
"' )";
ibmdb.open(ibmdbconnDash, function (err, conn) {
if (err) return console.log(err);
conn.query(addProducts, function (err, rows) {
if (err) {
console.log(err);
}
if (err) {
productAddedValue = false;
} else {
productAddedValue = true;
}
//RENDERING ADD PRODUCTS PAGE
res.render("add-products", {
page_title: "add-products",
data: rows,
userName: userName,
FN: firstName,
LN: lastName,
CO: company,
productAddedValue: productAddedValue,
});
conn.close(function () {
console.log("closed the function /add-products");
});
});
});
Ответ №1:
Вы должны использовать конструктор запросов или ORM, а не объединять вводимые пользователем данные. Это позволит правильно избежать ввода для предотвращения ошибок и атак SQL-инъекций. Смотрите этот пример из официальных привязок DB2.