php - 使用 PDO 连接添加到新表时出现问题

标签 php mysql

我是 PHP 新手,我正在尝试使用 PDO 连接将元素从一个表插入到另一个表中。我有一个产品表,显示在我的产品页面上,当我选择其中一个产品时,我希望将产品 ID 和数量添加到有自己的表的购物车中。我现在遇到的问题是我无法向购物车表添加任何内容。有人知道如何解决这个问题吗?谢谢。

产品.php

<?php 
$pdo = new PDO(
  "mysql:host=localhost;dbname=Shopping_cart;charset=utf8",
  "root",
  "root"
  );


    $statement = $pdo->prepare("SELECT * FROM products");
    $statement->execute();

    $products = $statement->fetchAll(PDO::FETCH_ASSOC);

    ?>

    <?php foreach ($products as $single_product) : ?>

    <div class="col-sm-12 col-md-4 mb-4">
          <div class="card h-100">
          <form action="index.php" method="POST">
              <img class="card-img-top" src="<?= $single_product['img']; ?>">
              <div class="card-body">
                <h4 class="card-title" id="title_name"><?= $single_product['name']; ?></h4>
                <h5 name="price"><?= $single_product['price'] . ' kr'; ?></h5>
                <p class="card-text"><?= $single_product['descr']; ?></p>
              </div> 
              <div class="card-footer">
              <label for="amount">Choose Amount</label>
              <input type="text" name="quantity" id="amount">
              <input type="hidden" name="prod_id" value="<?= $single_product['product_id']; ?>">
              <input type="submit" name="add_to_cart" class="removeOrBuy" value="Add To Cart">

              </div> 
              </form>
          </div><!--h-100-->
        </div><!--col-sm-12-->

addtocart.php

  <?php

  $pdo = new PDO(
  "mysql:host=localhost;dbname=Shopping_cart;charset=utf8",
  "root",
  "root"
  );

       if(isset($_POST['add_to_cart'])) {
          $prod_id = $_POST['prod_id'];
          $quantity = $_POST['quantity'];

           $statement = $pdo->prepare(
            "INSERT INTO cart (product_id, quantity)
            SELECT (product_id, quantity) FROM products"
            );
            $statement->execute(
             [
               ":quantity" => $quantity,
               "product_id" => $prod_id
             ]
            );
          }

         header('Location: index.php');   


        ?>

最佳答案

您的 INSERT 语句语法不正确,请使用...

   $statement = $pdo->prepare(
        "INSERT INTO cart (product_id, quantity)
                   VALUES (:product_id, :quantity)"
        );

此外,您的表单还有...

<form action="index.php" method="POST">

它不会调用其他脚本...

<form action="addtocart.php" method="POST">

关于php - 使用 PDO 连接添加到新表时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53029691/

相关文章:

PhpUnit 在 PhpStorm 中失败,在 Symfony 2 项目中退出代码为 255

同一个 SELECT 中的 PHP FOUND_ROWS 和 COUNT

mysql - 添加到 MySQL 查询

php 和 mysql 请选择其他日期 - 消息未出现

php - 检查数据中的远期日期

php - TYPO3 6.2 突然变得非常慢(只有前端!)

php - Laravel LiveWire 2 : Do we have to make a new class or we can do like traditional Controller

php - php 中的静态变量是否在请求中持续存在?

php - 我想按类别在两个不同的列中显示记录

php - 有没有办法将 php 放在 IE 条件注释中