为什么我的delete.php不删除数据库内容?

时间:2014-04-16 02:24:26

标签: php

我现在已经在我网站的管理端工作了一段时间。我已经成功创建了一个添加页面,将项目添加到数据库mysql中的数据。但是当添加一个delete.php页面时它不能很好地工作。当我选择我不再需要的那个并单击删除按钮时,这个消息出来并且当我检查我的网站时它没有删除文章也没有错误。

enter image description here

这是我的delete.php编码

<?php
include ("dbase.php");

//Use method $_Get to retrieve data from url
$id=$_GET['id'];

mysql_query("DELETE FROM logbook WHERE id=$id");

echo mysql_error();
header('Location:delete.php');

?>

有人可以看到我出错的地方吗?如果您需要更多信息,请告诉我。 感谢。

3 个答案:

答案 0 :(得分:1)

目前您加载delete.php,从数据库中删除,然后重定向到delete.php。当您重新加载delete.php时,您将从数据库中删除,然后重定向到delete.php。当你重新加载delete.php时,你明白了。

这就是错误“Redirect Loop”的来源;它永远不会结束。尝试评论您的header()来电或将位置更改为其他页面,例如deleted.php

答案 1 :(得分:1)

您需要检查$_GET['id']是否存在。只有这样,您才能执行查询然后重定向。

if (!empty($_GET['id'])) {
    mysql_query("DELETE FROM logbook WHERE id=$id");
    header('Location:delete.php');
}

一旦delete.php没有id的查询字符串参数,它就不会重新加载并导致无限循环。

答案 2 :(得分:0)

您的代码存在逻辑严重的安全问题。 至少使用“mysqli”,PDO,预备语句。阅读并保护您的Web应用程序。

如果该代码在“delete.php”中,那么您应该重定向到其他地方或使用如下的逻辑。

<?php
if($_GET['id'])
{
    include ("dbase.php");

    //Use method $_Get to retrieve data from url
    $id=addslashes($_GET['id']);

    mysql_query("DELETE FROM logbook WHERE id=".mysql_real_escape_string($id).")" or die(mysql_error());

    header('Location: delete.php');
}
?>