如何在PHP和MySQL中获取特定行的ID

如何在PHP和MySQL中获取特定行的ID,php,html,Php,Html,PHP给我的错误是 注意:第6行C:\xampp\htdocs\odieinventory\admin\add\u sales.php中未定义的索引:product\u id 这是我的问题 <?php if (isset($_POST['addCart'])) { $product_id = $_POST['product_id']; $qtyBuy = $_POST['qtyBuy']; $addQuery = "INSERT INTO sales (pr

PHP给我的错误是

注意:第6行C:\xampp\htdocs\odieinventory\admin\add\u sales.php中未定义的索引:product\u id

这是我的问题

<?php 
  if (isset($_POST['addCart'])) {
    $product_id = $_POST['product_id'];
    $qtyBuy = $_POST['qtyBuy'];

    $addQuery = "INSERT INTO sales (product_id, quantity) VALUES ($product_id, $qtyBuy)";
    $execQuery = mysqli_query($connection, $addQuery);
  }
?>

这是我的桌子

<form action="add_sales.php" method="POST">
        <?php 

          $query = "SELECT * FROM products";
          $exec = mysqli_query($connection, $query);

          while ($row = mysqli_fetch_array($exec)) {
            $product_id = $row['product_id'];
            $product_name = $row['product_name'];
            $description = $row['description'];
            $product_quantity = $row['quantity'];
            $product_price = $row['sell_price'];

         ?>
            <tr>
                <td class="text-center"><?php echo $product_id; ?>
                  <input type="hidden" name="product_id" value="<?php echo $product_id; ?>">
                </td>
                <td><?php echo $product_name; ?></td>
                <td><?php echo $description; ?></td>
                <td><?php echo $product_price; ?></td>
                <td><?php echo $product_quantity; ?></td>

                <td><input type="number" min="1" max="999" name="qtyBuy"></td>
            </tr>
         <?php } ?>

        </tbody>
      </table>
      </div>
      <div class="form-group">

          <input type="submit" name="addCart" value="Add Items to Cart" class="btn btn-info pull-right">

      </div>
   </div>
</form>


首先,您不应该将用户输入(
$\u POST
)直接放入SQL,以避免与mysqli一起使用


最简单的方法是为表中的每个产品添加一个单独的表单,其中包含产品ID和数量字段以及“添加到购物车”按钮。

在表文件table.php中,您必须:

1-打开
tbody
HTML标记

2-将您的html属性表单名称设置为数组(您有多个同名输入),在您的情况下,您只需提交最后一个
产品id
和最后一个
qtyBuy
输入值

table.php
如果检查隐藏元素,您是否确实在值中看到id?对于多行,可能存在重复,您将在每次迭代中对表单数据
产品\u id
进行重击。它只会提交最后一个,我不能更新你的帖子,因为我是新来的。我也是PHP新手。不管怎样,你有任何链接可以在哪里学习foreach吗?我还看到了关于使用会话的教程。谢谢。您好,不客气。您可以在这里看一下:我将阅读您提供的链接。你在单独的表格上是什么意思?你能进一步解释一下吗?好的,你需要在每行上迭代,在每一个
中,你会有一个
用于每个产品。这不是一个完美的解决方案,而是一个非常简单的解决方案。
<form action="add_sales.php" method="POST">
       <div><table><tbody>
        <?php

          $query = "SELECT * FROM products";
          $exec = mysqli_query($connection, $query);
          while ($row = mysqli_fetch_array($exec)) {
            $product_id = $row['product_id'];
            $product_name = $row['product_name'];
            $description = $row['description'];
            $product_quantity = $row['quantity'];
            $product_price = $row['sell_price'];

         ?>
            <tr>
                <td class="text-center"><?php echo $product_id; ?>
                  <input type="hidden" name="product_id[]" value="<?php echo $product_id; ?>">
                </td>
                <td><?php echo $product_name; ?></td>
                <td><?php echo $description; ?></td>
                <td><?php echo $product_price; ?></td>
                <td><?php echo $product_quantity; ?></td>

                <td><input type="number" min="1" max="999" name="qtyBuy[]"></td>
            </tr>
            <?php } ?>

        </tbody>
      </table>
      </div>
      <div class="form-group">

          <input type="submit" name="addCart" value="Add Items to Cart" class="btn btn-info pull-right">

      </div>
</form>
<?php
   if (isset($_POST['addCart']) && $_POST['addCart']=="Add Items to Cart") {
     foreach($_POST['qtyBuy'] as $index=>$value){
       if($value > 0){
           $addQuery = "INSERT INTO sales (product_id, quantity) VALUES (".$_POST['product_id'][$index].", ".$value.")";
           $execQuery = mysqli_query($connection, $addQuery);
        }  
     }
  }
?>