我有一个名为 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/