我的用户未被删除

时间:2014-04-07 19:00:55

标签: php mysql mysqli

我有一个名为users的数据库表,我已设法查看所有用户信息。我的下一步是删除一条记录。我发现很难做到,因为我使用的是物体。

我像这样调用我的用户列表:

echo $db->getUsers ();

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

 $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;
        }
    }

正如您所看到的,我创建了一个看起来像这样的链接fx:delete.php?id = 13

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

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

但我的用户并未被删除。我真的希望有人可以帮助我。请问,如果我需要为您提供更多代码。

1 个答案:

答案 0 :(得分:1)

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

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

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!";
}

**仅适用于以上给定的功能!