我做了一个删除按钮,我希望每当按下它都会删除我的数据库中的"保留"。这是我的代码:
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'");
编辑:
强制性警告:
-
mysql_query
被弃用,请考虑 mysqli 或 PDO。 - 此方法容易受到 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();
}