0

我有一个表格,里面装满了我的数据库中的数据,我希望它旁边有一个按钮,供每个特定用户删除该用户。但我该怎么做?

这是代码:

<?php               
    include '../includes/db_connect.php';

    $sql = "SELECT * FROM `users`";
    $result = mysql_query($sql, $connection) or die ("Failed to excecute the query $sql on $connection");
?>
<table border=1>
    <tr>
        <th>
        Access lvl
        </th>
        <th>
        Username
        </th>
        <th>
        Email
        </th>
    </tr>
<?php
    while($row = mysql_fetch_array($result))
    {
        echo "</td><td>";
        echo $row['access'];
        echo "</td><td>";
        echo $row['username'];
        echo "</td><td>";
        echo $row['email'];
        echo "</td></tr>";
    }
    echo "</table>";
?>
4

3 回答 3

2

我经常这样做,并为此使用 jQuery。我使用以下内容:

HTML:

<table>
....
<tr>
    <td><span class="delete">Delete me!</span></td>
</tr>
</table>

jQuery:

$(document).on("click", ".delete", function(event)
{
    var sData = "?id=" + $(this).data("id");
    $.ajax({
        url: "pages/delete_script.php",
        type: "POST",
        data: sData,
        success: function(sResult)
        {
            // Process the data you got back from the delete script
            // For example removing the row if successfully deleted:
            if(sResult == "OK")
            {
                $(this).closest("tr").remove();
            }
        },
        statusCode: 
        {
            404: function() 
            {
                alert("page not found");
            }
        }
    });
});

on()用于动态元素(我在该页面上使用 AJAX 进行所有操作)。然后我将需要发送的数据以正确的格式放入并执行 AJAX 请求。在 PHP 文件中可能是这样的:

if($_SERVER['REQUEST_METHOD'] == "POST")
{
    if(isset($_POST['id'])
    {
        mysql_query(
            sprintf('DELETE FROM `table` WHERE `id` = %d', $_POST['id'])
        );
    }
}

当然,建议使用更多检查以确保删除正确的检查。

于 2012-09-06T08:51:13.003 回答
0

让按钮重定向到如下网址:example.com/user.php?delete=[id]

并用 $row['id'] 填充 [id]。现在,当您捕获参数 $_GET['delete'] 时,您将获得一个 ID。现在您可以简单地将其放入 MYSQL 中的 DELETE 函数中。

笔记:

  • 确保您为此操作设置了安全级别
  • 确保您不允许在此 GET 中使用字符串
  • 确保使用 mysql_real_escape_string() !<- 最重要的
于 2012-09-06T08:38:35.610 回答
0

我会将其移至 AJAX 函数,通过 onClick 或 data-id="" 将变量传递给 JavaScript 函数并使用 jquery $('element').data('id'); 收集 id 并将其发送到另一个静态 php 文件。

在那里,您需要在将任何用户数据提交到 SQL 之前检查并清理已传递给文件的数据,如前所述:

  • 使用 post 作为 AJAX 方法
  • filter_var($var, FILTER_VALIDATE_INT)
  • mysql_real_escape_string

这对于用户体验来说会感觉更好,并且还消除了蜘蛛触发动作的一些风险。如果您对安全性不感兴趣,人们仍然可以破解它,但这会使它变得更难,并且如果您向 SQL 添加状态列而不是删除行,您只需更改其状态,您就可以轻松地将数据如果您被黑客入侵,请返回。

于 2012-09-06T09:04:14.437 回答