Php Mysql不断删除错误的表行
用户应该能够删除特定行,但程序会不断删除第一行。我找到了一个答案,但它不起作用。我不知道我做错了什么 cart.phpPhp 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'];
<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'];?>">×</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'];?>">×</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'];?>">×</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当前位置我确实了解到,一旦整个应用程序正常运行,我将负责安全问题。现在我必须让一切都先开始。我没有那么多的脚本要看,所以一切都很好。再一次,这是错误的方法。这是重复数据,你总是会错过一些东西。不,请学会第一次就把事情做好。