使用PHP从mysql数据库删除行时出错
问题描述:
我在从数据库中删除行时遇到问题。我尝试绑定参数(id)根据哪一行已被删除。它返回成功消息,该行已被删除,但该行实际上未从数据库中删除。 这里就是我使用AJAX调用删除脚本代码:使用PHP从mysql数据库删除行时出错
<script>
$("#del").click(function(){
var id;
$("input:checked").each(function(){
id=$(this).parent().parent().children(".id").html();
});
var datastring=JSON.stringify(id);
$.ajax({
type:'post',
url:'delete.php',
data: {data:datastring},
success: function(data){
alert(data);
}
});
});
</script>
这里的删除脚本(delete.php)
if(isset($_POST["data"]))
{
$id=$_POST["data"];
$db=mysqli_connect("localhost","root","","products");
if($db)
{
$query=mysqli_prepare($db,"DELETE FROM product_info WHERE prod_id=?");
$query->bind_param('i',$id);
$result=$query->execute(array($id));
if($result)
echo "Deleted successfully";
else
echo "Error in deletion of product";
$query->close();
}
else
echo "Error Connecting to DB";
}
else
echo "POST not set";
“删除成功”的说法相呼应回来,但警告该行实际上并未从数据库中删除。如果我省略bind_param部分并直接在查询中指定id,那么该记录将被删除。 帮助!
答
好,所以问题已解决。引起该问题的声明是这样:
var datastring=JSON.stringify(id);
相反,我这样做是在Ajax调用
$.ajax({
type:'post',
url:'delete.php',
data: {data:id}, //instead of sending datastring, I sent the id directly
success: function(data){
alert(data);
}
});
哪个值包含'id'在jQuery的功能? – 2014-12-05 10:51:10
从'$ _POST ['data']'中获取'var_dump($ id)'后,检查它是否为绑定所需的格式。但从它的外观来看,你试图将数组转换成JSON,在这种情况下,你不能直接使用'='运算符,你需要渲染一个'IN'条件。 – fejese 2014-12-05 10:56:25
即使在使用在条件查询中,结果是相同的@fejese – leMS 2014-12-05 11:08:55