Php Mysql不断删除错误的表行

Php Mysql不断删除错误的表行,php,mysql,Php,Mysql,用户应该能够删除特定行,但程序会不断删除第一行。我找到了一个答案,但它不起作用。我不知道我做错了什么 cart.php <form id='updateCartForm' action="update_cart.php" method="get"> <input name="cart_item_name" type = "hidden" id ="cart_item_name" value='<?=$product['prod_name'];

用户应该能够删除特定行,但程序会不断删除第一行。我找到了一个答案,但它不起作用。我不知道我做错了什么

cart.php

 <form id='updateCartForm' action="update_cart.php" method="get">
             <input name="cart_item_name" type = "hidden"  id ="cart_item_name" value='<?=$product['prod_name'];?>'>
 <input name="cart_item_id" type = "hidden"  id ="cart_item_id" value='<?=$product['id'];?>'>
 </form>
<?php
require_once "core/db.php"

//get data from form
$cart_item_name = $_GET['cart_item_name'];
$cart_item_id = $_GET['cart_item_id'];

//execute query
$sql = "DELETE FROM cart WHERE id =" .$cart_item_id;  
$db->query($sql);

//flash success message
$domain =($_SERVER['HTTP_HOST'] != 'localhost')?'.'.$_SERVER['HTTP_HOST']:false;
$_SESSION['success_flash'] = $cart_item_name. ' was deleted from your cart.'; 
<a href="update_cart.php?productcartid=<?=$product['id'];?>">&times</a>
<?php
ob_start();
require_once 'core/db.php';

//delete from cart

           $productcartid =$_REQUEST['productcartid'];

           // sending query
           $del = "DELETE FROM cart WHERE id='$productcartid'";
           $db->query($del);
           header("Location: cart.php");

如果没有WHERE子句,Delete查询将删除所有行,
否则,它将删除与WHEREcaluse匹配的行

如果未按预期工作,则检查包含id的变量,如:

echo $cart_item_id;
exit;

并查看它包含的内容。

设计正确吗?
在你之前的问题中,我也评论了你的设计是否正确。在进行ehre时,将产品id用作购物车项目id是没有意义的

<form id='updateCartForm' action="update_cart.php" method="get">
             <input name="cart_item_name" type = "hidden"  id ="cart_item_name" value='<?=$product['prod_name'];?>'>
 <input name="cart_item_id" type = "hidden"  id ="cart_item_id" value='<?=$product['id'];?>'>
 </form>

这是一种可怕的查询方式。有朝一日,您会发现不仅一行,而且整个数据库都被删除了。阅读PDO准备的语句。

决定使用href使用更简单的方法

cart.php

 <form id='updateCartForm' action="update_cart.php" method="get">
             <input name="cart_item_name" type = "hidden"  id ="cart_item_name" value='<?=$product['prod_name'];?>'>
 <input name="cart_item_id" type = "hidden"  id ="cart_item_id" value='<?=$product['id'];?>'>
 </form>
<?php
require_once "core/db.php"

//get data from form
$cart_item_name = $_GET['cart_item_name'];
$cart_item_id = $_GET['cart_item_id'];

//execute query
$sql = "DELETE FROM cart WHERE id =" .$cart_item_id;  
$db->query($sql);

//flash success message
$domain =($_SERVER['HTTP_HOST'] != 'localhost')?'.'.$_SERVER['HTTP_HOST']:false;
$_SESSION['success_flash'] = $cart_item_name. ' was deleted from your cart.'; 
<a href="update_cart.php?productcartid=<?=$product['id'];?>">&times</a>
<?php
ob_start();
require_once 'core/db.php';

//delete from cart

           $productcartid =$_REQUEST['productcartid'];

           // sending query
           $del = "DELETE FROM cart WHERE id='$productcartid'";
           $db->query($del);
           header("Location: cart.php");

更新_cart.php

 <form id='updateCartForm' action="update_cart.php" method="get">
             <input name="cart_item_name" type = "hidden"  id ="cart_item_name" value='<?=$product['prod_name'];?>'>
 <input name="cart_item_id" type = "hidden"  id ="cart_item_id" value='<?=$product['id'];?>'>
 </form>
<?php
require_once "core/db.php"

//get data from form
$cart_item_name = $_GET['cart_item_name'];
$cart_item_id = $_GET['cart_item_id'];

//execute query
$sql = "DELETE FROM cart WHERE id =" .$cart_item_id;  
$db->query($sql);

//flash success message
$domain =($_SERVER['HTTP_HOST'] != 'localhost')?'.'.$_SERVER['HTTP_HOST']:false;
$_SESSION['success_flash'] = $cart_item_name. ' was deleted from your cart.'; 
<a href="update_cart.php?productcartid=<?=$product['id'];?>">&times</a>
<?php
ob_start();
require_once 'core/db.php';

//delete from cart

           $productcartid =$_REQUEST['productcartid'];

           // sending query
           $del = "DELETE FROM cart WHERE id='$productcartid'";
           $db->query($del);
           header("Location: cart.php");

检查您在
$cart\u item\u id
中获得的值。假设有人将
cart\u item\u id
作为
1发送;落桌车
读一点关于@bansi的内容,他只需要发送值
id
,整个表就会被清除,因为
id=id
总是正确的。PHP和所有其他语言都很难使用;有很多令人头疼的问题,但是它们在meNew上慢慢成长到PHP?希望您使用的是PDO,而不是mysqli。PDO更通用,也可以用于mysql以外的数据库。不用学习postgresql/php接口、mssql/php接口等等。是的,我是新来的。但是,在我看来,数据库的设计是正确的,您在这里没有看到的是页面上有一个查询,它将产品和购物车表连接在一起,允许我显示购物车中的产品信息。因此,当我使用$product['id]时,它实际上是cart\u item\u id(cartRowId本身),但如果我使用$product['product\u id',这将为我提供产品的id。这就是为什么我对删除错误的产品感到困惑的原因。然后,你需要做的第一件事是阅读这篇文章,更重要的是阅读这篇文章:人们对你在问题上所做的事情做出结论,而不是对你在这里没有看到的事情做出结论。虽然这是你自己的答案,但这是错误的,因为你仍然对sql敞开着大门注射。@e4c5:Bro,显然这是安全的。我就在这里读到了。你完全错了。并不是所有的答案都相同。比如说,你的答案本身是错误的,同样的,这里也会有其他的答案是错误的。只需搜索如何在中防止sql注入PHP@e4c5当前位置我确实了解到,一旦整个应用程序正常运行,我将负责安全问题。现在我必须让一切都先开始。我没有那么多的脚本要看,所以一切都很好。再一次,这是错误的方法。这是重复数据,你总是会错过一些东西。不,请学会第一次就把事情做好。