使用 PHP 从 mysql 数据库中删除行时出错


Error deleting rows from mysql database using PHP

我在从数据库中删除行时遇到问题。我尝试绑定必须删除行的参数 (id)。它返回成功消息,指出该行已被删除,但该行实际上并未从数据库中删除。这是我使用 ajax 调用删除脚本的代码:

<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>

这是删除脚本(删除.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);
            }
  });