У меня есть функция 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); } } }
Этот запрос удаляет все категории из вашего сообщения, потому что вы сообщаете ему с вами, где предложение. Вы, по сути, говорите, удаляете каждую запись из таблицы 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, а идентификатор категории – (значение вашего отмеченного флажка).
Отказ от ответственности: я предполагаю, что вы сохраняете свои идентификаторы категорий в своей функции ($ query_cat_id [$ x]).