0

我正在使用隐藏字段添加数据。最初它可以工作并在我的数据库中显示我需要的所有信息。但是,当我再次对其进行处理时,它只捕获了与之前已经捕获的名称相同的名称。

例如,有一个苹果的图像,当我添加时,它应该显示名称为苹果。然后,当我单击梨的图像时,显然它应该在我的数据库中显示“梨”作为名称。但不是“梨”,而是显示为苹果。有谁知道为什么?

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="apple.jpg" style="vertical-align: text-bottom;" title="Apple"/> Apple <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Apple"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>

<td class="timgG"><h4><img src="pear.jpg" style="vertical-align: text-bottom;" title="Pear"/> Pear <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Pear"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>


<?php
            if (isset($_SESSION['user_id'])) {
                //$order_id = $_POST['order_id'];
                $name = $_POST['name'];
                //$quantity = $_POST['quantity'];
                $price = $_POST['price'];

                $query = "INSERT INTO order_details (name,price) VALUES ('" . $name . "','" . $price . "')";
                $status = mysqli_query($link, $query) or die(mysqli_error($link));

                if ($status) {
                    $msg = "Item has been added.<br />";
                    $msg .= "<a href='product.php'>Back</a></p>";
                }
            } else {
                $msg = "There was an error processing the form.Please try again <a href=girls.php>Back";
            }
            ?>
4

4 回答 4

1

您的HTML输入具有相同的name

<input type="hidden" name="name" value="Apple"> 

<input type="hidden" name="name" value="Pear"> 

既然Apple是第一个,那就是第一个被PHP.

解决方法是使用两种不同的表单,它们具有唯一的提交按钮名称,或者为您的隐藏输入使用唯一的名称。

于 2013-03-27T15:56:48.003 回答
0

name对同一表单中的不同产品使用相同的属性,因此您将覆盖表单字段。

您可以使用数组来拥有多个具有相同名称的项目:

<input type="hidden" name="name[]" value="Apple">
// etc.

然后在 php 中,$_POST['name']也将是一个数组。

你真的应该切换到准备好的语句。

于 2013-03-27T15:55:05.467 回答
0

<form>对每个项目使用单独的。当前设置(如果您以不同方式设置其他参数,您会注意到)始终使用表单内隐藏输入的第一个定义。

尝试使用

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="apple.jpg" style="vertical-align: text-bottom;" title="Apple"/> Apple <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Apple"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="pear.jpg" style="vertical-align: text-bottom;" title="Pear"/> Pear <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Pear"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>

于 2013-03-27T15:56:49.023 回答
0

使用两种不同的形式

<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="apple.jpg" style="vertical-align: text-bottom;" title="Apple"/> Apple <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Apple"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>
<form action="addOrder.php" method="post">
<td class="timgG"><h4><img src="pear.jpg" style="vertical-align: text-bottom;" title="Pear"/> Pear <br>
<input type="hidden" name="op" value="add">
<input type="hidden" name="name" value="Pear"> 
<input type="hidden" name="price" value="0.50">
<input type="submit" value="Add to Cart">
</h4></td>
</form>

也正如一些人提到的,在数据​​库中插入内容时使用 mysqli_real_escape_string()

于 2013-03-27T15:59:06.090 回答