【问题标题】:How to delete a row in php?如何在php中删除一行?
【发布时间】:2017-05-01 21:07:30
【问题描述】:

我是用 php 制作的。当我选择一个类时,例如我选择了 class9,它会显示 class9 的表格。我还在包含删除按钮的表中插入了一行以删除相应的行。现在我想删除一行购买单击该行中的按钮。我怎样才能做到这一点?
首先我从这个选项中选择一个类,如下图所示;The image from which we select the class
然后将显示相应的表格。
This is the image. When I click on the button, the corresponding row should be deleted.

<?php
include "connection.php";
?>

<!doctype html>
<html>
<head>
<title>KDR</title>
</head>

<body>


    <table border="2px" width="50%" height="auto">
    <tr>
        <th>No</th>
        <th>Name</th>
        <th>F/Name</th>
        <th>Age</th>
        <th>Delete</th>
    </tr>
    <?php
    $table = $_POST['formCountry'];
    $sql = "SELECT * FROM $table";
    $result = $conn->query($sql);
    while($row = $result->fetch_assoc())
    {
        echo "<tr>";
        echo "<td>" . $row['id'] . "</td>";
        echo "<td>" . $row['name'] . "</td>";
        echo "<td>" . $row['fname'] . "</td>";
        echo "<td>" . $row['age'] . "</td>";
        echo "<td><form method='POST' ><input type='submit' name='deletestudent' value='Delete'/></form></td>";
        echo "</tr>";
    }
    ?>
 </table>

 </body>

【问题讨论】:

  • 在您的表单按钮中,您应该给出操作和行的 ID。例如 &lt;form method='POST' action="delete_row.php"&gt;delete_row.php 执行删除。
  • 好了,那delete_row.php表单中应该写什么代码呢?
  • delete_row.php 中,您应该编写 MySQL 查询,根据您与表单一起传递的 id 删除行。

标签: php mysql


【解决方案1】:

这是应该做的,看下面的cmets,重要!

应该发送元素的当前id,所以当你点击按钮时 通过 $_GET['id']; 获取元素 ID;

<td><a href='?id=".$row['id']."'>delete</a></td>

if (isset($_GET['id'])) {
    //Throw query DELETE ... WHERE id = $_GET['id'];
}

【讨论】:

  • 当然。因为根据 GET 值简单地删除数据库行的页面不是主要的安全风险或任何东西..
  • 可以,但您可以使用 $_SESSION 进行一些控制
  • 我的意思是,如果为用户设置了一个确切的会话,这个用户可以完成 de request GET
  • 我不是在谈论谁会这样做。我说的是直接将 GET 值放入查询中!
  • 我觉得没关系
【解决方案2】:

类似的东西。也许需要稍微调整一下。

您的表格按钮:

echo "<td><form method='POST' action="delete_row.php" ><input type='submit' name='deletestudent' value="'.$row['id'].'"/></form></td>";

在 PHP (delete_row.php) 中,您应该执行以下操作

<?php
    $servername = "localhost";
    $username = "username";
    $password = "password";
    $dbname = "myDB";

    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);
    // Check connection
    if (!$conn) {
         die("Connection failed: " . mysqli_connect_error());
    }

   if(isset($_POST['id']) and is_numeric($_POST['id']))
   {

        $delete = $_POST['id']

        $stmt = $conn->prepare("DELETE FROM YOURTABLENAME WHERE id = ?");
        $stmt->bind_param('i', $delete);
        $stmt->execute(); 
        $stmt->close();     
   }  

注意:未经测试,我在这里使用mysqli_*

更新:正如@icecub 建议的那样,您也可以使用隐藏字段来获取 ID

echo "<td>
          <form method='POST' action='delete_row.php' >
               <input type='hidden' name='deletestudent' value='".$row['id']."'/>
               <input type='submit' value='Delete'/>
          </form>
     </td>";

【讨论】:

  • 我建议在表单中添加一个隐藏的输入字段,而不是将 id 放在按钮值中。该值也出现在按钮上。可能看起来有点奇怪。
  • 是的,这也是一种选择。
  • 无论如何,我要 +1,因为我使用准备好的语句进行了一些正确的编码。这是所有mysql_* 帖子之间的一个受欢迎的景象:)
  • 谢谢。我也添加了带有隐藏字段的示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多