我试图用这段代码从mysql数据库中删除用户
if (isset($_POST['user_delete'])) {
$key = $_POST['keyToDelete'];
$check = "DELETE FROM user WHERE id = ". $key or die(mysqli_error($connection));
$result2 = $connection->query($query);
if($result2->num_rows >0){
$query_delete = "DELETE FROM user WHERE id =". $key or die(mysqli_error($connection));
var_dump($query_delete);
} else {
}
但它不想删除我的数据库。但是 sql 已经正确而且我也得到了 id 因为我试图 var_dump 它。请帮助我的代码出了什么问题
你这里有几个问题,
您的 or die(mysqli_error($connection))
是查询字符串,而不是实际查询。此外,与其手动检查错误,不如配置为自动抛出错误。为此,将以下行添加到连接代码中:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
您尝试删除它两次?尽管从未执行第二个查询,但您只需定义查询字符串(并且永远不会运行它)。
num_rows
仅可用于选择语句。您希望 affected_rows
检查查询是否实际删除了任何数据。
- 您没有使用准备好的语句。
if (isset($_POST['user_delete'])) {
$key = $_POST['keyToDelete'];
$query = "DELETE FROM user WHERE id = ?";
$stmt = $connection->prepare($query);
$stmt->bind_param("s", $key);
$stmt->execute();
if ($stmt->affected_rows) {
echo "Deleted ".$stmt->affected_rows." rows";
} else {
echo "No rows matched the criteria.";
}
$stmt->close();
}