Ваш код находится в середине цикла и вызывает DELETE
для каждой найденной записи. Не удивительно, что он удаляет все компании.
Обычно вы удаляете один и только один:
$delete = $db->prepare("DELETE from companies WHERE id=?");
$response = $delete->execute(array($_POST['id']));
Где $_POST['id']
представляет опубликованный параметр id
. Причиной использования POST является то, что некоторые браузеры постараются быть полезными и предварительно извлекать любые ссылки GET. Это означает, что они будут все удалять.
Соглашение заключается в использовании POST, поскольку браузеры не запускают их автоматически.
Такие инструменты, как jQuery, позволяют легко размещать ссылки с $.post
и тому подобное. Например:
<a href="/delete" data-id="3" data-method="post" class="btn btn-primary">Delete</a>
Где вы можете затем автоматически связать все эти кнопки "post", используя что-то вроде этого:
$(function() {
// Augment all postable links with a click handler
$('a[data-method="post"]').click(function() {
$.post($(this).attr('href'), {
id: $(this).attr('data-id')
});
return false;
});
});
Если вы используете принципы ненавязчивого JavaScript, вы можете добавить это довольно легко.