如何从mysql使用一个按钮删除记录


How to delete a record from mysql using a button?

我希望能够使用在每行末尾显示的删除按钮删除一行。我需要两个查询从我的数据库中完全删除一个人,因为我有一个n-m关系之间的人员和功能。查询如下:

delete from `Persons` where `Person ID` = '1';

我想使用实际代码中提供的删除按钮实现这些查询,我该如何做到这一点?

更新:我根据克里斯蒂安·哈兰写的东西做了一些修改,它重新加载了,但这个人没有被删除,应该做些什么来让它工作呢?

showall.php:

    <table>
<thead>
    <tr>
        <?php
// Variables
  $dbhost = "localhost";
  $dbuser = "root";
  $dbpass = "root";
  $dbname = "CISV";
  $dberror1 = "Could not connect to database: ";
  $dberror2 = "Could not select database: ";
  $dberror3 = "Could not execute query: ";
  $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ($dberror1 . mysql_error());
  $select_db = mysql_select_db('CISV') or die ($dberror2 . mysql_error());
        $query = "SELECT p.`Person ID`, p.`First Name`, p.`Last Name`, p.Gender, p.`Date Of Birth`, p.Email, p.`Phone Number`, c.Region, c.Country, p.`Delegation ID`
        FROM Persons as p, Chapters as c
        WHERE c.`Chapter ID`=p.`Chapter ID`
        ORDER BY p.`Delegation ID";
        $result = mysql_query($query) or die($dberror3 . mysql_error());
        $row = mysql_fetch_assoc($result);
        foreach ($row as $col => $value) {
            echo "<th>";
            echo $col;
            echo "</th>";
        }
        ?>
    </tr>
</thead>
<tbody>
<?php
mysql_data_seek($result, 0);
while ($row = mysql_fetch_assoc($result)) {
    ?>
    <tr>
      <?php         
      foreach($row as $key => $value){
        echo "<td>";
        echo $value;
        echo "</td>";
    }
    ?>
    <td><a href="/DeletePerson.php?id=<?php echo $result['Person ID']; ?>" class="btn btn-danger">Delete</a></td>
</tr>
<?php } ?>

DeletePerson.php:

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "root";
$dbname = "CISV";
$dberror1 = "Could not connect to database: ";
$dberror2 = "Could not select database: ";
$dberror3 = "Could not execute query: ";
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ($dberror1 .      mysql_error());
$select_db = mysql_select_db('CISV') or die ($dberror2 . mysql_error());
$UserId = mysql_real_escape_string($_GET['id']);
if(isset($UserId)){
//DELETE QUERY
$Del = mysql_query("DELETE FROM `Persons` WHERE `Person ID` = '$UserId'");
if($Del){
    $Flag = TRUE;
}
else{
    $Flag = FALSE;
}
header("Location: /showall.php?delete=$Flag");

}
else{
die("Error");
}

我会使用JavaScript和Ajax。

  1. 创建一个带有onclick函数的html按钮,如delete_user();
  2. delete_user()调用.php文件来验证权限并执行一些mysql-delete提示。
  3. php文件返回一个布尔值给JavaScript。
  4. 你可以捕捉这个布尔值并通知用户结果。

我认为最好的方法是创建单独的文件函数。php

<?php
//functions.php
$id = filter_this($_POST[id]);
mysql_query("delete from Persons_Functions where `Person ID` = '$id');
?>

并通过JQuery发送:

function deleteuser(id){
    $.post("admin_action.php", {action:'delete_user',id:id}, function(data){
    if(data.trim()=="done"){
        console.log("OK!");
    });
}}

如果没有JS,你可以使用HTML(只需将BUTTON更改为A):

<a href='script.php?action=delete&id=12'>DELETE</a>
PHP:

$id = $_GET[id];//filter this value
mysqli_query($link, "DELETE FROM users WHERE ID='$id'"); //use mysqli

我将使用GET方法来处理这个

<?php foreach ($results as $result): ?>
    <a href="/index.php?action=delete&id=<?= $result['id']; ?>">Delete</a>
<?php endforeach; ?>

在index.php的顶部

if (isset($_GET['action']) && $_GET['action'] == 'delete') {
    if (isset($_GET['id']) && intval($_GET['id']) != 0) {
        $id = intval($_GET['id']);
        $stmt = "delete from table where id='{$id}'";
    }
}

使用链接:

<tbody>
<?php
mysql_data_seek($result, 0);
while ($row = mysql_fetch_assoc($result)) {
    ?>
    <tr>
        <?php         
        foreach($row as $key => $value){
            echo "<td>";
            echo $value;
            echo "</td>";
        }
        ?>
        <td><a href="/DeletePerson.php?id=<?php echo $result['Person ID']; ?>" class="btn btn-danger">Delete</a></td>
    </tr>
    <?php } ?>
</tbody>

DeletePerson.php:

   <?php
$UserId = mysql_real_escape_string($_GET['id']);
if(isset($UserId)){
   //DELETE QUERY
  mysql_query("DELETE FROM Persons WHERE Person ID = '$UserId'");
  mysql_query("DELETE FROM Persons_Functions WHERE Person ID = '$UserId'");


  header("Location: /showall.php?flag=deleted");

}
else{
die("Error");
}