PHP While Statement Удалить только одну строку из таблицы Mysql PDO - PullRequest
0 голосов
/ 11 января 2019

У меня есть оператор while и оператор PDO для удаления одной строки, если кто-то нажимает кнопку удаления.

$companies = $db->query("SELECT * FROM companies LIMIT 50");
while($result = $companies->fetch()) {
                $delete = $db->prepare("DELETE from companies WHERE id=?");
                $response = $delete->execute(array($result['id']));           
   }
}

Например:

Компания 1 УДАЛИТЬ

Компания 2 УДАЛИТЬ

Если кто-то нажмет эту кнопку удаления, я хочу удалить компанию, к которой она присоединена. Прямо сейчас, когда я выполняю этот код и нажимаю «Удалить» только для одной компании, он удаляет каждую компанию в таблице.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

Нет необходимости в цикле, просто передайте один идентификатор компании и удалите через ajax или ссылку или метод отправки сообщения

0 голосов
/ 11 января 2019

Ваш код находится в середине цикла и вызывает 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, вы можете добавить это довольно легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...