PHP通过按钮单击从表中删除行

问题描述 投票:1回答:2

我有问题传递按钮的id以根据id删除行。我该怎么做才能正确传递id?

   <form method="POST" >
                <table border="1">
                    <tr>
                        <th>Student Name</th>
                        <th>Matric Number</th>
                        <th>IC Number</th>
                        <th></th>
                        <th></th>
                    </tr>
                    <?php
                        $link=mysqli_connect("localhost","root","") or die(mysqli_error());
                        mysqli_select_db($link,"myDataBase") or die(mysqli_error());
                        $query="Select * From student" or die(mysqli_error());
                        $result=mysqli_query($link,$query);

                        if($result->num_rows > 0) {
                        while($row = $result->fetch_assoc()) {
                            echo "<tr><td>".$row["name"]."</td><td>".$row["matric"]."</td><td>".$row["ic"]."</td>
                            <td><input type=button value=Update></td><td><input type=submit value=Delete name=delete ><input type=hidden name=id value=".$row["id"]." ></td></tr>";     
                        }   
                        }else{  
                            die("0 results");
                        }
                        if (isset($_POST['delete'])){
                            echo $did=$_POST['id'];
                            $query="Delete From student where id='$did'";
                            $result=mysqli_query($link,$query);
                        }
                    ?>
                </table>
            </form>
php html
2个回答
0
投票

问题是包含学生ID的所有隐藏字段都放在一个表单中。因此,当您单击任何删除按钮时,始终会发布最后隐藏的字段ID。将form标记分别放在每行的Delete列中,然后只发布单击的行ID。还可以在SELECT查询后放置DELETE查询,以便在删除后立即刷新HTML表。您还需要避免SQL注入。

<?php

$link = mysqli_connect( "localhost", "root", "" ) or die( mysqli_error() );
mysqli_select_db( $link, "myDataBase" ) or die( mysqli_error() );

// delete record
if( isset( $_POST['delete'] ) ) {

    echo $did = $_POST['id'];
    $query = $link->prepare( "DELETE FROM student WHERE id=?" );
    $query->bind_param( "s", $did );
    $query->execute();
}

// get all records
$query = "SELECT * FROM student" or die( mysqli_error() );
$result = mysqli_query( $link, $query );

?>

<table border="1">

    <tr>
        <th>Student Name</th>
        <th>Matric Number</th>
        <th>IC Number</th>
        <th>Update</th>
        <th>Delete</th>
    </tr>

    <?php

        if( $result->num_rows > 0 ) {

            while( $row = $result->fetch_assoc() ) {

                echo "<tr>";
                echo "<td>" . $row["name"] . "</td>";
                echo "<td>" . $row["matric"] . "</td>";
                echo "<td>" . $row["ic"] . "</td>";
                echo "<td><input type=button value=Update></td>";
                echo "<td><form method='POST'>
                <input type=hidden name=id value=".$row["id"]." >
                <input type=submit value=Delete name=delete >
                </form>
                </td>";
                echo "</tr>";
            }

        } else {  
            die("0 results");
        }  
    ?>

</table>

您还可以分别为每一行创建删除链接(即test.php?delete_id = 100),而不是在服务器端创建要删除的formGET ID。


0
投票

您需要更改查询:

 $query="Delete From student where id=$did";  

代替

 $query="Delete From student where id='$did'";  
© www.soinside.com 2019 - 2024. All rights reserved.