Невозможно вставить данные в базу данных mysql PHP PDO

Невозможно вставить данные корзины в таблицу MySQL. Я могу вставить данные клиента при нажатии кнопки «Отправить», но не данные корзины. Может кто-нибудь помочь мне разобраться в этом? Таблица должна содержать такие данные, как идентификатор, название продукта, цена, количество и общая цена.

$(document).on("click", "#register_btn", function () {
        $.ajax({
            url:"php/register_customer.php",
            method:"POST",
            data:{
                name: document.querySelector("#customer_name").value,
                phone: document.querySelector("#customer_phone").value,
            },
            success:function(data)
            {
                console.info(data);
            }
        });
    })


function load_cart_data()
    {
        $.ajax({
            url:"php/fetch_cart.php",
            method:"POST",
            dataType:"json",
            success:function(data)
            {
                $('#cart_details').html(data.cart_details);
                $('.total_price').text(data.total_price);
                $('.final_price').text(data.final_price);
                $('.final_quantity').text(data.total_quantity);
                $('.total_tax').text(data.tax);
                $('.badge').text(data.total_item);
            }
        });
    }

register_customer.php

<?php 
session_start();
include('config.php');

if (isset($_POST['name'])) {
    $customerName = $_POST["name"]; 
    $customerPhone = $_POST["phone"];

    $cart_detail = [];
    foreach($_SESSION["shopping_cart"] as $keys => $values) {
        $sql = "INSERT INTO `cart` (`name`, `price`, `quantity`, `total_price`) VALUES (?,?,?,?)";
        $statement= $dbh->prepare($sql);
        $res = $statement->execute([$values['product_name'], $values['product_price'], $values['product_quantity'], $values["product_quantity"] * $values["product_price"]]);
    }
    $sql = "INSERT INTO `customers` (`customer_name`, `customer_phone`) VALUES (?,?)";
    $statement= $dbh->prepare($sql);
    $res = $statement->execute([$customerName, $customerPhone]);
    if ($res) {
        echo json_encode(['res'=>"success"]);
    }
}

?>

Мутная таблица:

CREATE TABLE IF NOT EXISTS cart 
( cart_id int(11) NOT NULL AUTO_INCREMENT
, name varchar(100) NOT NULL
, price double(10,2) NOT NULL
, image varchar(255) NOT NULL
, quantity int(10) NOT NULL
, total_price varchar(100) NOT NULL
, vegnonvegimage varchar(255) NOT NULL
, PRIMARY KEY (cart_id) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

$_SESSION["shopping_cart"] установлен и заполнен? оберните try / catch, чтобы увидеть, есть ли ошибки

Lawrence Cherone 30.03.2021 00:39

Как вы пытались отлаживать свой код?

Martin 30.03.2021 00:42

product_name значение для этого показывает undefined на консоли

jenny 30.03.2021 00:44

Тогда это кажется довольно простым решением. При определении $_SESSION["shopping_cart"] убедитесь, что каждый из них включает ключ product_name.

miken32 30.03.2021 00:45

Теперь я получаю значение, но дата не вставляется в таблицу

jenny 30.03.2021 00:51

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ cart (cart_id int (11) NOT NULL AUTO_INCREMENT, name varchar (100) NOT NULL, price double (10,2) NOT NULL, image varchar (255) NOT NULL, quantity int (10) NOT NULL, total_price varchar (100) NOT NULL, vegnonvegimage varchar (255) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (cart_id)) ENGINE = InnoDB DEFAULT CHARSET = latin1;

jenny 30.03.2021 00:59

У вас проблема либо на стороне клиента, либо на стороне сервера. Начните со своего клиента. Игнорируйте AJAX, это излишество, придерживайтесь только своего JS / jQuery. console.info все. Как только это будет хорошо, вы можете перейти к AJAX. На стороне PHP не используйте базу данных, просто выгружайте все, чтобы посмотреть, что к чему. Как только это сработает, вы можете начать помещать его в базу данных.

Chris Haas 30.03.2021 01:00

Все нормально работает. Я даже получаю значения product_name, price amount в register_customer.php и даже данные клиента вставляются. в базу данных, но данные корзины не

jenny 30.03.2021 01:03

Хорошо сделано. Спасибо

jenny 30.03.2021 01:09
NOT NULL в запросе предотвратит вставку, поскольку вы не передаете никаких значений, поэтому они не могут быть нулевыми, если вы прочитаете мой комментарий о try / catch, он будет показывать ошибку и решил бы вашу проблему час назад (либо установите значение или не помещайте NOT NULL в столбцы таблицы)
Lawrence Cherone 30.03.2021 01:41

Или определите значение ПО УМОЛЧАНИЮ.

Strawberry 30.03.2021 05:59

Между прочим, столбцы с именем price почти никогда не являются DOUBLE (или VARCHAR); именно поэтому был изобретен DECIMAL.

Strawberry 30.03.2021 06:00

Всем большое спасибо. Очень помогло.

jenny 31.03.2021 07:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
13
51
0

Другие вопросы по теме