Как вставить данные массива сессии в базу данных PHP - PullRequest
1 голос
/ 11 апреля 2019

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

ниже код, который я пытаюсь, но он вставляет только первую строку сеанса, не вставляя все.

вот код:

$User_Email=$_SESSION['User_Email'];
$date=date("d-m-Y");

foreach($_SESSION["shopping_cart"] as $v){
    $sql = "INSERT INTO reservation (check_in,check_out,room_id,hotel_id,User_Email,date)
values
('{$v['Checkin']}','{$v['Checkout']}','{$v['room_id']}','{$v['room_id']}','$User_Email','$date')";

$update = mysqli_query($connection, $sql);
        if ($update) {
            $_SESSION['success'] = 'Information updated successfully';

            header("location: my_account.php");
            exit;
        } else {
            $_SESSION['errormsg'] = 'Someting is wrong in updating your Information, Please try again later.';
            header("location: my_account.php");
            exit;
        }}

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

заранее спасибо.

1 Ответ

1 голос
/ 11 апреля 2019

Вы используете header() в своем цикле, это перенаправит на первой итерации либо в случае неудачи.

Вы можете сохранить статус успеха или неудачи в переменной

if ($update) {
    $status = 1;
} else {
    $status = 0;
}

Затем переместите ваше состояние за пределы цикла, как:

if($status) // your success
{
    header('your location');
    exit;
}
else{ // failure
    header('your location');
    exit;
}

Убедитесь, что уверены $status объявляется как $status = 0; в объявлении верхнего уровня.

Обратите внимание, что ваш код широко открыт для внедрения SQL-кода, для предотвращения использования SQL-инъекции PDO

Полезные ссылки:

Как я могу предотвратить внедрение SQL в PHP?

Являются ли PDOподготовленных операторов, достаточных для предотвращения внедрения SQL?

...