如何从数据库中删除特定用户?

How To Delete a Specific User from Database?

这是我的代码:

<?php 
// starts session
session_start();

// set values
$DB_SERVER = 'localhost';
$DB_USERNAME = 'root';
$DB_PASSWORD = '';
$DB_NAME = 'acoolname';

// creates a new connection to the database
$conn = new mysqli($DB_SERVER, $DB_USERNAME, $DB_PASSWORD, $DB_NAME);

// checks connection
if ($conn->connect_error) {
  die("ERRO: Falha ao conectar. " . $conn->connect_error);
}

// query to delete the user
$sql = "DELETE FROM users WHERE id = id";

// logout user
if ($conn->query($sql) === true) {
  header("location: logout.php");
}else {
  echo "ERRO: Falha ao conectar. " . $conn->error;
}

// close connection
$conn->close();
?>

您的 WHERE 条件针对每一行比较当前行的 id 是否与 id 匹配。换句话说,查询将字段与自身进行比较,从而为每一行生成 true。因此每一行都会被删除。

您必须将第二个 id 替换为包含当前用户的 id-value 的变量,或者替换为当前用户的 ID。后者容易受到 SQL 注入。请参阅 this question 如何安全地将参数插入查询。

id = id 始终 returns 为真,因此查询确实删除了所有用户。

删除特定用户的安全方法是使用准备好的语句,以避免SQL注入。

类似

$stmt = $conn->prepare('DELETE FROM users WHERE id = ?');
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->close();