在我的 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/