以下代码是我从数据库中删除数据的方法。用户选择要删除的标题,然后查询应删除这些行。不幸的是,这不起作用。
我确保DELETE查询在PhpMyAdmin和MySQL Workbench中使用它,但由于某种原因,我编码的PHP代码不允许删除工作。
<?php
session_start();
require ("../login.php");
if (!isset($_SESSION['user']))
header('Location: ../index.php');
include ("header.php");
include ("subnav.php");
?>
<h2>Current Subscriptions</h2>
<?php
$user_id = $_SESSION['user'];
if (isset($_POST['submit'])) {
foreach($_POST["titles"] as $title) {
$stmt = $db->prepare("DELETE FROM subscriptions WHERE user=:user AND title=:title)");
$stmt->bindValue(':user', $user_id, PDO::PARAM_INT);
$stmt->bindValue(':title', $title, PDO::PARAM_INT);
$stmt->execute();
}
echo '<p>Thank you! Your changes have been made!</p>';
}
else {
$stmt = $db->prepare
("SELECT t.id, t.publisher, t.title
FROM titles t
JOIN subscriptions s
ON t.id = s.title
WHERE s.user=:user
ORDER BY t.id");
$stmt->bindValue(':user', $user_id, PDO::PARAM_STR);
$stmt->execute();
$rows = $stmt->fetchAll();
$num_rows = count($rows);
if ($num_rows == 0)
echo 'You are not currently subscribed to any titles.';
else {
?>
<form action="" method="post">
<?php
foreach($rows as $row)
echo '<input type="checkbox" name="titles[]" value="' . $row['id'] . '">' . $row['publisher'] . ' - ' . $row['title'] . '<br>';
?>
<input type="submit" value="Update" name ="submit" id="submit">
</form>
<?php
}
}
?>
<?php
include ("footer.php");
?>
答案 0 :(得分:3)
我确实在您的SQL中看到了额外的)
,请尝试删除它。
("DELETE FROM subscriptions WHERE user=:user AND title=:title)");
答案 1 :(得分:0)
很难用你的代码判断,但尝试用
包装你的foreachtry {
foreach(...) {
...
}
} catch (PDOException $ex) {
$ex->getMessage();
}
这应该清楚地告诉你发生了什么。