php 删除 $row 无效

php delete $row not working

我有一个 table 注册用户。我的代码假设在 table 中单击删除时删除一行。 这是在 database.php

.....
 while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
    echo '<tr><td align="left">' . $row['Id'] . '</td><td align="left"><a href="delete.php?id=' . $row['Id'] . '">Delete</a></td></tr>';
  }
...... 

因此,我在单击删除时获取了 ID。到目前为止,这部分有效,但是当我尝试 运行 删除查询时,它不起作用。 delete.php

<?php
session_start();
include 'connection.php';
   if (isset($_POST['Id']) && is_numeric($_POST['Id'])){
   $id = mysqli_real_escape_string($conn, $_POST['Id']);
   $result = mysqli_query("DELETE FROM table_name WHERE Id= '$id' ")
   or die(mysqli_error());

   echo "<h3><br><br><a href=database.php> <b> Go Back</a></h3>";
   echo "Data Deleted";
   }else {
      echo "Error";
      echo "<h3><br><br><a href=database.php> <b> Go Back</a></h3>";
   }  
?>

我只得到 "Error" 并且它没有删除该行。我该如何解决?

编辑:

<?php
session_start();
include 'connection.php';

if (isset($_GET['Id']) && is_numeric($_GET['Id']))
{
$id = mysqli_real_escape_string($conn, $_GET['Id']);
$result = mysqli_query("DELETE FROM User_reg WHERE Id= '$id' ")
or die(mysqli_error());



echo "<h3><br><br><a href=AdminLog.php> <b> Go Back</a></h3>";
echo "Data Deleted";
}else {
echo "Error";
echo "<h3><br><br><a href=AdminLog.php> <b> Go Back</a></h3>";
}
?>

仍然得到相同的结果,删除查询不起作用。 "Id" name 的设置方式与数据库中的设置方式相同。

$_POST['Id'] 未设置,因为您通过 link.

访问了该脚本
<a href="AdminDelete.php?id=' . $row['Id'] . '">Delete</a>

link 是 GET 请求,而不是 POST 请求。因此,应该设置 $_GET['id'](注意它是 $_GET['id'] 而不是 $_GET['Id'],因为您在 link 中使用了 id),但是 it's not really safe to use a link to delete things to begin with .

有多种方法可以解决此问题。一种方法是让 table 中的删除 link 将您定向到发布到实际删除脚本的中间确认页面。

它不会工作,因为您正在发送一个 get 参数并检查 post 并注意上面对准备语句的注释,并且尽量不要使用 get 删除数据,因为程序员可以轻松更改 id并删除另一个用户信息使用 post 代替,因为它不能被调整,这就是为什么社交用途让我称它为 ajax 删除,因为除非你创建一个替代品,否则无法检索删除的信息,所以使用 POST METHOD 而不是改变这个

 if (isset($_POST['id']) && is_numeric($_POST['id'])){
 $id = mysqli_real_escape_string($conn, $_POST['id']);

至此

 if (isset($_GET['id']) && is_numeric($_GET['id'])){
$id = mysqli_real_escape_string($conn, $_GET['id']);

这应该有效