php - 尝试从表中删除数据,但在用户单击删除之前不知道 ID。数据库

标签 php html css sql

在我的 home.php 上,当管理员从 admin.php 提交博客时,我的博客会自动添加到其中。但是,我正在尝试添加删除功能,以便管理员能够从 home.php 中删除某个博客,而不是进入 PHPMyAdmin 数据库以从表中删除数据。

我尝试了不同的 SQL 语句并使用了不同的变量来尝试完成此操作,但似乎都没有效果。有些工作有效,但方式不正确(如按下删除按钮时,它会删除所有内容而不是选择的博客)。

deletepost.php 中的 PHP 和 SQL 语句:

$blogid = $_GET['blogid'];
$query= mysqli_query($con, "SELECT blogid FROM blog_post WHERE blogid = '".$blogid."'");
if(mysqli_num_rows($query) > 0){

    $row=mysqli_fetch_array($query, MYSQLI_ASSOC); // fetch the data
    $query= mysqli_query($con,"DELETE FROM blog_post WHERE blogid = {$row['blogid']}");
    echo "deleted";

} else {
    echo mysqli_error($con);
}

mysqli_close($con)

home.php代码:

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        $count = $count + 1;
        echo "<div class='the-blog'>";
        echo "<h2>".$row['postTitle']."</h2>";
        echo "<h3>Posted by: " . $row['author'] . "</h2>";
        echo "<p>". $row['postCont'] . " </p>";
        if(isset($_SESSION['admin'])){
                              if($_SESSION['admin'] == "admin"){
                                  echo "<form action='deletepost.php'>";
                                  echo "<input id='number' type='number' value=" . $row['blogid'] .">";
                                  echo "<br><input type='submit' value='Delete' name='delete'>";
                                  echo "</form>";
                              }}
        echo "</div>";  
    }
} else {
    echo "<h2 align='center'>Blog Currently Not Available!</h2>";
    }

我希望当管理员点击删除按钮时,它应该删除那个特定的博客。因此,例如,如果管理员在最近的博客上单击删除按钮,那么它应该只从数据库中删除该数据。如果管理员要单击另一个博客,例如下面的第 4 个博客,那么它应该从数据库中删除该特定博客。

最佳答案

删除前不需要SELECT。只需使用表单中的值。

  • 使用准备好的语句,而不是直接将用户输入的数据注入(inject)到您的 SQL 语句中。
  • 使用表单方法 post 而不是 get 进行破坏性操作。
  • 在您的表单中使用 name='blogid' 实际通过网络发送 ID。这可能是您删除所有内容而不是仅删除单个条目的原因。

主页.php

<?php
// Notice method is post
if($_SESSION['admin'] == "admin"){
    echo "<form method='post' action='deletepost.php'>";
    echo "<input name='blogid' id='number' type='number' value=" . $row['blogid'] .">";
    echo "<br><input type='submit' value='Delete' name='delete'>";
    echo "</form>";
}}

删除帖子.php

<?php
// Processing script. 
if ($_SESSION['admin'] == "admin") {
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {

        $blogid = $_POST['blogid'];

        $stmt = $con->prepare("DELETE FROM blog_post WHERE blogid = ?");
        $stmt->bind_param("i", $blogid); // Maybe it is a string? Then, use `s` instead of `i`nteger
        $stmt->execute();
        $stmt->close();

        echo "deleted";
    }
}

关于php - 尝试从表中删除数据,但在用户单击删除之前不知道 ID。数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57853832/

相关文章:

php - WooCommerce - 数量变化时自动更新总价

javascript - 隐藏元素时如何为 div 的背景设置动画?

javascript - 使用 JavaScript 将 null 替换为字符串

javascript - 如何从 Polymer 中的 JavaScript 访问自定义 CSS 属性?

css - 我希望我的链接只在我点击它时改变颜色,而不是仅仅通过刷新页面。我如何使用 CSS 做到这一点?

php - 如何使用 php 在列表中回显结果

php - 获取在 while 循环中加在一起的每一行的总和

javascript - 如果数组循环内的项目不可用,则返回零并按工作日排列项目

html - 如何让这个标题跨越页面?

CSS - 使用 :hover (no JS) 停止动画