我有一个 PHP 函数,允许用户选择帖子应该显示在哪些类别中。我希望能够在用户取消选中复选框时从数据库中删除他们选择的类别。但我尝试的一切似乎都删除了所有用户类别或根本不起作用。有人可以帮我解决这个问题吗?
这是我的 PHP 函数的一部分,它应该删除未选中的类别。
for ($x = 0; $x < count($query_cat_id); $x++){
if($query_cat_id[$x] == $cat['id']){
echo 'checked="checked"';
} else if(!isset($query_cat_id[$x])) {
$mysqli = mysqli_connect("localhost", "root", "", "sitename");
$delete_id = mysqli_query($mysqli,"DELETE FROM posts_categories WHERE post_id = '" . $post_id . "'");
if (!$delete_id) {
print mysqli_error($mysqli);
}
}
}
最佳答案
此查询正在从您的帖子中删除所有类别,因为您告诉它使用 where 子句。您实质上是在说,从表 posts_categories 中删除每条具有帖子 id = $post_id 的记录。您需要添加到您的 where 子句以使其更具体。
$delete_id = mysqli_query($mysqli,"DELETE FROM posts_categories WHERE post_id = '" . $post_id . "' AND categoryID = '". $query_cat_id[$x] ."'");
现在这与您所做的相同,但添加了一个额外的限定词。仅从表中删除 post_id 为 $post_id 且类别 ID 为(未选中复选框的值)的行。
免责声明:我正在猜测您在函数 ($query_cat_id[$x]) 中存储类别 ID 的位置。
关于PHP & MySQL 函数从数据库问题中删除未检查的类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3543904/