POST问题

时间:2013-06-28 19:08:09

标签: php mysql post

我对PHP很新,我不能解决一件事,我打赌这是一个非常简单的解决方案。

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

为了让我获得选定 POST 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选择的那个。

2 个答案:

答案 0 :(得分:0)

  1. 使用浏览器中的一些开发人员工具验证是否将正确的POST数据发送到PHP脚本。我真的(真的,真的,真的)享受Chrome的开发者工具。您可以观看所有网络流量,然后获取有关它的详细信息。有很多开发人员工具包虽然很棒。
  2. echo您尝试在PHP中运行的查询,以检查它是否正确。
  3. 调试Web应用程序时,只需要做几件事。

    Bonus - 始终确保转义数据或将其转换为整数(如果是ID),以确保不会受到SQL注入的攻击。<​​/ p>

    E.g。

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

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

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

答案 1 :(得分:0)

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

就像说: '苹果是绿色的' '苹果红了' 'Apple是黑人'

苹果有哪种颜色?