PHP 中的删除按钮不起作用


delete button in PHP not working

我做了一个删除按钮,我希望每当按下它都会删除我的数据库中的"保留"。这是我的代码:

require_once"database.php";
if(isset($_POST["verwijderen"])) {
    $email = ($_SESSION["userId"]);
    $delete = mysql_query("DELETE FROM reserveringen WHERE Email = $email ");
}

verwijderen是我的删除按钮的名称。 $email给了我登录者的电子邮件,$delete查询。 reserveringen是我的表名,email是列名。我已经试过了,但它不起作用。 $email确实给了我登录人的电子邮件(我已经用echo($email)检查过)。

编辑:完整代码:

<?php
session_start();
$loggedIn = "";
if (isset($_SESSION["loggedIn"])) {
    $loggedIn = $_SESSION["loggedIn"];
} else {
    header('Location:reserveringssysteeminloggen.php');
}
$email = ($_SESSION["userId"]);

require_once"database.php";
if(isset($_POST["verwijderen"])) {
    $email = ($_SESSION["userId"]);
    $result = $mysql_query("DELETE FROM reserveringen WHERE Email = '$email' ");}
?>

SQL使用单引号(')来表示字符串文字,你目前缺少这些文字:

$delete = mysql_query("DELETE FROM reserveringen WHERE Email = '$email'");

编辑:
强制性警告:

  1. mysql_query被弃用,请考虑 mysqli 或 PDO。
  2. 此方法容易受到 SQL 注入攻击。请考虑使用预准备语句。

在$email周围添加引号,例如:

$delete = mysql_query("DELETE FROM reserveringen WHERE Email = '$email' ");

旁白:您的查询容易受到 SQL 注入的攻击。您可以考虑使用预准备语句。

首先,不要使用 mysql_query,它已被弃用。PDO::Mysql 是使用的新标准,由于 prepare 语句(和 bindParam),使用起来也更安全。这将保护您免受 SQL 注入的影响。它还会自动将您的字符串正确放入 sql 查询中。

$pdo = new PDO('mysql:host=localhost;dbname=DATABASENAME', "USERNAME", "PASSWORD");
if(isset($_POST["verwijderen"])){    
    $sql = "DELETE FROM reserveringen WHERE Email = :email";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':email', $email, PDO::PARAM_STR);   
    $stmt->execute();
}