Member 13393002 Ответов: 1

Как мне вычесть количество моих продуктов, перечисленных в списке, непосредственно из моей базы данных продуктов? (В MySQL)


Во-первых, я на самом деле не занимаюсь жестким кодированием и тому подобным, я действительно пытался найти решение своей проблемы, но я не получаю некоторых объяснений. Или, может быть, это не тот способ, которым я кодирую свой, поэтому я не могу понять.

Технически у меня есть 3 lisboxes для количества, названия продукта и цены продукта. Когда продукт добавляется в корзину, он автоматически перечисляется в списке.

Я пытаюсь вычесть количество запасов продуктов, сохраненных в базе данных, из количества продуктов, перечисленных в корзине.

Мой код работает, когда я покупаю только один продукт, но когда я пытаюсь купить 2 или более продуктов, ничего не вычитается из базы данных моих продуктов.

PS. Извините, если когда-либо я неправильно разместил свой вопрос, это просто моя первая публикация здесь. Заранее благодарю вас!

Что я уже пробовал:

string item = string.Empty;
int quantity = 0;

for (int i = 0; i <= LBItemName.Items.Count - 1; i++)
{
    item += Convert.ToString(LBItemName.Items[i]);
}

for (int j = 0; j <= LBItemQuantity.Items.Count - 1; j++)
{
    quantity += Convert.ToInt32(LBItemQuantity.Items[j]);
}

MySqlCommand tryCommand = new MySqlCommand("UPDATE QuizonVet.Product SET
    numberofstocks = (numberofstocks - '" + quantity + "') where productname='" + 
    quantity + "';", myConnection);

myReader = tryCommand.ExecuteReader();
myReader.Close();

1 Ответов

Рейтинг:
4

Patrice T

MySqlCommand tryCommand = new MySqlCommand("UPDATE QuizonVet.Product SET numberofstocks = (numberofstocks - '" + quantity + "') where productname='" + quantity + "';", myConnection);

Можно заподозрить quantity не productname.

Не решение вашего вопроса, а еще одна проблема, которая у вас есть.
Никогда не создавайте SQL-запрос путем объединения строк. Рано или поздно вы сделаете это с помощью пользовательских вводов, и это откроет дверь к уязвимости под названием "SQL-инъекция", она опасна для вашей базы данных и подвержена ошибкам.
Одна кавычка в имени - и ваша программа выйдет из строя. Если пользователь вводит имя, например "Брайан О'Коннер", может привести к сбою вашего приложения, это уязвимость SQL-инъекции, и сбой-это наименьшая из проблем, вредоносный пользовательский ввод, и он продвигается к командам SQL со всеми учетными данными.
SQL-инъекция - Википедия[^]
SQL-инъекция[^]
Атаки SQL-инъекций на примере[^]
PHP: SQL-инъекция - руководство пользователя[^]
Шпаргалка по предотвращению инъекций SQL - OWASP[^]