如何在一个php函数中删除mySQL页面中的特定行


How to delete a specific rows in mySQL in a page, within a php function

我对如何从页面中的函数删除数据库中的特定行感到头痛。这就是我卡住的地方:我知道我必须使用来自一行的特定ID,所以我将$ ID放入while循环中,然后在这里卡住了。因为我不知道如何从特定行检索那个ID。在每一行中,都有一个"提交"按钮来删除它。有人能帮我吗??

在我的另一个页面,当我调用这两个函数:

<?php 
session_start();
include_once('connect.php');
$object = new User;
if(isset($_POST['supprimer'])) {
    $object->supprimer($id);
}
?>
<html>
    <head>
    <link rel="stylesheet" type="text/css" href="public/css/layout.css">
    </head>
    <body>
        <?php $object->showConcessionnaire(); ?>
    </body>
</html>
PHP

public function showConcessionnaire(){
            $st = $this->db->prepare("SELECT * FROM `phplogin`.`users` WHERE type='Concessionnaire'");
            $st->execute();
            echo '<form action="supprConc.php" method="post">
            <table class="tableCredit">
                <tr class="">
                    <th>Date</th>
                    <th>Nom d''utilisateur</th>
                    <th>Mot de pass</th>
                    <th>E-mail</th>
                    <th>Cr&eacute;&eacute; par</th>
                    <th></th>
                    <th></th>
                </tr>
                ';
            while($r = $st->fetch(PDO::FETCH_ASSOC)){
                $id = $r['ID'];
                echo '<tr class="lightGray">
                    <td>'.$r['Date'].'</td>
                    <td>'.$r['username'].'</td>
                    <td>'.$r['password'].'</td>
                    <td>'.$r['E-mail'].'</td>
                    <td>'.$r['Creer par'].'</td>
                    <td></td>
                    <td><input type="submit" name="supprimer" value="X" class="logout"></td>
                    </tr>';
            }
            echo '</table></form>';
        }

    public function supprimer($id){
            $st = $this->db->prepare("DELETE FROM `phplogin`.`users` WHERE `users`.`id` = '$id'");
            $st->execute();
        }

一种解决方案是插入包含行ID的隐藏输入。

<input type="hidden" name="rowID" value="$id" />

当调用你的函数时…

$object->supprimer($_POST['rowID']);

! !确保转义字符串以避免SQL注入!

修改如下:

<td><input type="submit" name="supprimer" value="X" class="logout"></td>

:

<td><input type="submit" name="supprimer" value=".$id." class="logout"></td>

,然后将函数调用更改为:

$object = new User;
if(isset($_POST['supprimer'])) {
    $id = $_POST['supprimer'];
    $object->supprimer($id);
}

这不是一个完全安全的解决方案,但更像是一个概念证明,以演示该方法。

您可以添加隐藏输入字段id:

<input type="hidden" name="id" value="'.$id.'">

当然这是在echo上你应该把form移到<td>