0

我对 PHP 很陌生,我无法弄清楚一件事,我敢打赌有一个非常简单的解决方案。

问题是,在一页上我有多行显示Product ID. 我试图通过$product_id = $_POST['pid'];在不同的 .php 上检索帖子来删除选定的行,但是我返回的值是它发布的最后一行而不是选定的行,这导致我在尝试删除时删除了最后一行例如第一行。

为了让我获得选定的帖子product_id而不是最后发布的帖子,我需要更改什么?

正如我所说,我很新,所以我确定我的代码中有一些错误,或者它的方式太简单了,这就是我想要做的。

$sql2 = "SELECT * from shoppingcart_items WHERE shoppingcart_id=".$wid."";
$result2 = mysql_query($sql2, $con) or die('sql2'.mysql_error());

while($row = mysql_fetch_array($result2))                       
$pid = $row['product_id'];                                     
echo '<td><input type="text" name="pid"  value="'. $pid .'"></td> ';  

这会检索 3、4、5、7 等行,在另一个 php 页面上,我尝试删除选定的行。

$sql2 ="DELETE FROM shoppingcart_items WHERE product_id = '".$_REQUEST["pid"]."' AND shoppingcart_id ='".$_REQUEST["wid"]."'";

所以会发生什么是我删除了最后一个值 7 而不是我选择的那个值,例如 3。

4

2 回答 2

0
  1. 在您的浏览器中使用一些开发人员工具来验证是否将正确的 POST 数据发送到 PHP 脚本。我真的(真的,真的,真的)喜欢 Chrome 的开发者工具。您可以查看所有网络流量,然后获取有关它的详细信息。不过,有一堆很棒的开发人员工具包。
  2. echo您尝试在 PHP 中运行的查询以检查它是否正确。

调试 Web 应用程序时只需要做几件事。

奖励 - 始终确保转义数据或将其转换为整数(在 ID 的情况下),以确保您不会受到 SQL 注入的攻击。

例如

$querySTR = 'SELECT * FROM sensitive_data WHERE id=' . (integer)$_POST['id'] . " AND username='" . $db->real_escape_string($_POST['username']) . "'";

请注意,这是使用 PHP 的 mysqli 扩展并且$db是有效的数据库连接资源。

哦,除非您发布特定代码,否则没有人可以提供具体帮助:)

于 2013-06-28T19:14:28.427 回答
0

看起来您为 foreach 中的每个可能的产品 ID 分配了相同的“输入”名称(即“名称 =“pid”),因此您最终会得到多个相同的名称......

就像说:“苹果是绿色的”“苹果是红色的”“苹果是黑色的”

苹果有什么颜色?

于 2013-06-28T20:12:57.130 回答