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

使用php从数据库中删除注释,php,mysql,ajax,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,

我正在制作一个论坛网页,我会在每个评论下放置删除按钮。现在,当您按下此按钮时,我使用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
$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);
?>
现在的问题是我无法从PHP端接收它。我使用了调试器,发现索引值是正确的。我的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
$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,但它也没有解决问题。任何有助于我改进代码的想法都将不胜感激。提前感谢

您向PHP代码发送了param,但没有定义其名称:
数据:{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调用page来检查PHP代码是否正常工作。

在jQuery的调用中,
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脚本的输出是什么
  • $\u POST
    的内容是什么
  • id是否在
    $\u POST
    数组(
    $\u POST['id']
    )中
  • 数据库中是否存在具有该id的行

这些问题应该可以帮助您更准确地定位问题。

您是否看到id是否已发布?您是否尝试通过电子邮件向自己发送一个var_dump($_POST),以确保PHP收到了您希望它收到的内容?@LifeHacker Yes itis@Mike威利斯,我该怎么做?对不起,我还是习惯了这个,你不发送任何变量到php文件。它们应该在
data{}
中,名称正确。我以前试过,但不起作用:/PHP在我直接调用页面时不起作用,因为它说$SoonToBeDeletedComment未定义。如果你直接调用PHP,那是因为你使用了$\u POST。检查$\u GET只是为了测试用$\u GET:if(isset($\u GET['index']){$SoonToBeDeletedComment=$\u GET['index'];}替换它。下一步直接用param调用php文件(并显示调用的url)仍然会得到相同的错误未定义变量:SoonToBeDeletedCommentWhat url?问题就在这里。嗯,你为什么不干脆做
var\u dump($\u POST)在您的PHP中,没有其他内容。。。然后看看发送了什么。它返回了数组(0){}?好的,这就是问题所在。JS没有发送任何数据。在进行ajax调用之前,能否验证脚本中的索引值是否存在?我使用了调试器,当我查看索引值时,它会告诉我4非常感谢您,我确实看到了我做错了什么。。。它返回id=1,尽管我已经删除了它。所以我试图删除一些已经被删除的东西。当我再次检查我的数据库时,我看到了这一点。谢谢大家!