Php 如何只删除选中的帖子?

Php 如何只删除选中的帖子?,php,mysql,sql,sql-delete,Php,Mysql,Sql,Sql Delete,我的PHP代码的一部分只是删除SQL上的第一个“post”,而不是所选的一个: if (isset ($_POST['delete'])){ $result = mysql_query ("SELECT * FROM posts") or die(mysql_error()); $data = mysql_fetch_array($result); mysql_query ("DELETE FROM posts WHERE id = $data[i

我的PHP代码的一部分只是删除SQL上的第一个“post”,而不是所选的一个:

if (isset ($_POST['delete'])){
        $result = mysql_query ("SELECT * FROM posts") or die(mysql_error());
        $data = mysql_fetch_array($result);
        mysql_query ("DELETE FROM posts WHERE id = $data[id]");
        header("Location: main.php");
    };

为什么会发生这种情况?

一步一步,这就是你正在做的事情,也就是为什么会发生这种情况:

1) 检查是否设置了post变量delete:

if (isset ($_POST['delete'])){
2) 从数据库中获取所有帖子:

$result = mysql_query ("SELECT * FROM posts") or die(mysql_error());
3) 从$result数组中取出第一项

$data = mysql_fetch_array($result);
4) 删除我们刚获取的项目

mysql_query ("DELETE FROM posts WHERE id = $data[id]");
5) 重定向到main.php

header("Location: main.php");

你的代码中有一些奇怪的东西<代码>id不是变量或值。您在第二个查询中使用了
$result[id]
,这根本不应该起作用。我在第3步中已经了解了我的问题,但如何解决它?几天后,我才开始学习php,感谢你这么能干。你的问题最终是,除了第一步和第四步,你什么都不需要。您应该知道要删除的id,并且只需要运行该语句。没有理由道歉:pok非常感谢你的帮助和解释,我终于做到了:D