使用php从数据库中删除注释
我正在制作一个论坛网页,我会在每个评论下放置删除按钮。现在,当您按下此按钮时,我使用ajax将注释的ID发送到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,
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,尽管我已经删除了它。所以我试图删除一些已经被删除的东西。当我再次检查我的数据库时,我看到了这一点。谢谢大家!