使用php从数据库中删除注释

时间:2014-06-27 14:01:42

标签: php mysql ajax

我正在创建一个论坛网页,我会在每条评论下删除此按钮。现在,当您按下此按钮时,我使用ajax将注释的ID发送到PHP文件,如下所示:

function Deletethis(index) {
var result = confirm("Want to delete?");
    if (result==true) {
    $.ajax({
        url: "deletepost.php",
        type: "POST",
        data: index,
        success: function(){
            location.reload();
        }
    });
    } else return false;
}

现在问题是我无法从PHP端收到它。我使用过调试器,发现索引值是正确的。我的PHP看起来像这样:

<?php
$con = mysqli_connect("localhost", "root", "123", "test") or die("DIE");
if (isset($_POST['index'])) {
    $SoonToBeDeletedComment = $_POST['index'];
};
$index = intval($SoonToBeDeletedComment);            
mysqli_query($con, "DELETE FROM commentsbox WHERE commentsbox.`ID` = $index");
echo "Post Deleted...";
mysqli_close($con);
?>

我的代码没有给出任何错误,但它也没有删除帖子。当我在navicat上手动执行相同的过程时,它正在工作,所以我想也许索引是一个字符串,它应该是一个整数。所以我使用intval但它也没有解决问题。任何想法,以帮助我改进我的代码表示赞赏。提前致谢

2 个答案:

答案 0 :(得分:1)

在jQuery的.ajax调用中,data属性需要是一个对象,而不是一个字符串(字符串只是它是一个完整的GET查询字符串,实际上,但这不是你需要的)。

所以,试试这个:

$.ajax({
    url: "deletepost.php",
    type: "POST",
    data: {id: index},
    success: function(response){
        alert(response);
        // location.reload();
    }
});

然后在PHP中,将其作为:

$_POST['id']

更新

完整性检查表:

  • 是您的Deletethis函数实际接收索引吗?
  • 是你的ajax调用正确的脚本吗?
  • 是一个对象的ajax数据属性,就像我上面解释的那样?
  • PHP脚本的输出是什么?
  • $_POST的内容是什么?
  • $_POST数组($_POST['id'])中的ID?
  • 具有该ID的行是否存在于db?

这些问题可以帮助您更准确地查明问题。

答案 1 :(得分:0)

您将param发送到您的PHP代码而不定义他的名字:data: { index: index } // param : value

function Deletethis(index)
{
    if ( confirm("Want to delete?") )
    {
        $.ajax({
            url: "deletepost.php",
            type: "POST",
            data: {
                index: index
            },
            success: function(){
                window.location.reload();
            }
        });
    }
}

通过使用param直接调用页面,检查您的PHP代码是否正常工作。