php - 我的用户没有被删除

标签 php mysql mysqli

我有一个名为 users 的数据库表,并且我已经设法查看所有用户信息。我的下一步是删除记录。我发现这很难做到,因为我正在使用对象。

我这样称呼我的用户列表:

echo $db->getUsers ();

我在初始化文件中实例化我的对象:

 $db = new DB_con ();

在我的 DB_con 类中,我调用函数 getUsers

public function getUsers() {
        $str = "SELECT * FROM users";
        $result = $this->mysqli->query ( $str );
        if ($result->num_rows > 0) {
            $string = "<table><thead><tr><th>id</th><th>First name</th><th>Last name</th><th>Email</th><th>Role</th><th>Action</th></tr></thead><tbody>";
            while ( $row = $result->fetch_assoc () ) {
                $string .= "<tr><td>" . $row ['id'] . "</td><td>" . $row ['first_name'] . "</td><td>" . $row ['last_name'] . "</td><td>" . $row ['email'] . "</td><td>" . $row ['role_id'] . "</td><td>  [<a href='delete.php?id=" . $row ['id'] . "'>Delete</a>]</td></tr>";
            }
            $string .= "</tbody></table>";
            return $string;
        }
    }

如您所见,我创建了一个类似于以下效果的链接:delete.php?id=13

在我的delete.php 文件中,我有以下内容:

$id = intval($_GET['id']);
echo $id;
$sql = "DELETE FROM users WHERE id=$id";
$result = mysql_query($sql);

但是我的用户没有被删除。我真的希望有人能帮助我。请询问我是否需要向您提供更多代码。

最佳答案

@MichaelBerkowski已经指出您将 mysql_* 库与 mysqli 混合在一起,这不好,并且可能是您的问题所在,您没有使用 建立连接>mysql_* 库。

您可以将以下函数添加到您的 DB_con 类中,该类使用准备好的语句,并且默认情况下将保护您免受 SQL 注入(inject):

public function deleteUser($id)
{
    $sql = "DELETE FROM users WHERE id = ?";
    if (!$result = $this->mysqli->prepare($sql))
    {
        return false;
    }

    if (!$result->bind_param('i', $id))
    {
        return false;
    }

    return $result->execute();
}

并将其调用为 $db->deleteUser($_GET['id']); 无需使用 intval,因此您可以这样使用:

if ($db->deleteUser($_GET['id']))
{
    echo "User has been deleted!";
}
else
{
    echo "Could not delete the user!";
}

** 仅适用于上面给定的函数!

关于php - 我的用户没有被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920794/

相关文章:

javascript - 如何用 PHP 压缩 JSON?

php - 如何使用 PHP 比较两个表并返回不匹配的结果

php - 如何在我的帐户页面的 woocommerce 中重新排序自定义选项卡?

php - 如何编写MYSQL查询用户层次关系?

php - MySQL 计算 INT UNSIGNED 上的负值

php - mysqli_query()至少需要2个参数,给定1个

php - 使用 jQuery Ajax 删除 mySQL 表行

php - 从多个表中选择,但如果找不到则忽略

mysql - 重置关系表mysql中的行ID

MySQL 连接导致服务器消失,进程列表中没有任何内容