Member 13422296 Ответов: 1

Что не так с моим кодом? Он работает только для одного элемента в списке.


Что не так с моим кодом?
Я попытался обновить количество для каждого продукта в корзине покупок, но это не работает для каждого продукта в списке отдельно.

<?php
  global $con;
  
  include("includes/db.php");
  
  $ip = getIp();

  if(isset($_POST['update_cart'])){
  
  $qty = $_POST['qty'];

  $update_qty = "update cart set qty='$qty' where ip_add='$ip'";
  
  $run_qty = mysqli_query($con, $update_qty);

  $_SESSION['qty']=$qty;

  $total = $total*$qty;
  
  }
?>


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

<?php				
  global $con;
					
  include("includes/db.php");
					
  $ip = getIp();

  if(isset($_POST['update_cart'])){
					
    $qty = $_POST['qty'];

    $update_qty = "update cart set qty='$qty' where ip_add='$ip'";
					
    $run_qty = mysqli_query($con, $update_qty);

    $_SESSION['qty']=$qty;

    $total = $total*$qty;
					
  }
?>

eddieangel

Вы запросили базу данных, чтобы убедиться, что все товары в корзине действительно имеют правильный ip-адрес? Если да, то правильно ли обновляется база данных, но не ваша переменная сеанса?

Member 13422296

Вы правы.
Поэтому, пожалуйста, предложите мне правильный код.
Я буду Вам благодарен.

И спасибо за ответ

Mohibur Rashid

Ваш вопрос недостаточно ясен. И ваш код делает то, как вы его написали, если ip_add уникален, он не будет обновлять более одного элемента.
&низкотемпературный;
mysqli_query($con, $update_qty); вернет количество строк, которые обновляются.

Member 13422296

Поэтому, пожалуйста, предложите мне правильный код.
Я буду Вам благодарен.

Member 13422296

И большое вам спасибо за ответ.💐

1 Ответов

Рейтинг:
1

Patrice T

Цитата:
Я попытался обновить количество для каждого продукта в корзине покупок, но это не работает для каждого продукта в списке отдельно.

Как я понимаю ваш запрос, он обновляет количество всех товаров в корзине, потому что вы не говорите, какой товар (в корзине) вы хотите обновить.
-----
Вопрос: вы используете публичный ip-адрес пользователя в качестве идентификации, но что происходит, когда 2 пользователя, работающих в одной компании, имеют один и тот же публичный ip-адрес ?
-----
$update_qty = "update cart set qty='$qty' where ip_add='$ip'";

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


Member 13422296

Поэтому, пожалуйста, предложите мне правильный код.
Я буду Вам благодарен.