От автора: если долго не касаться какой-то темы, то она постепенно забывается. Вот я давно уже не занимался удалением записей в PHP. Сегодня мы освежим эти знания, чтобы быть наготове.
О чем это я?
Конечно, я говорю не об обычных строках, а тех, которые записаны в базу данных. Опять… Да, господа! На сцене опять его величество MySQL. С другими СУБД наш любимый язык программирования не сотрудничает. Но ближе к реализации!
Вспоминаем, какая команда SQL отвечает за «стирание» строк из БД:
1 |
DELETE FROM `city` WHERE `id`=2 |
На снимке видно, как работает эта команда в phpMyAdmin. Но это не совсем, что нам требуется. Отсюда мы можем только «почерпнуть» правильно составленный запрос.
Программным путем
Попробуем реализовать выполнение команды DELETE в программном коде. Для этого мы сначала коннектимся к БД. Затем выполняем запрос с помощью функции mysqli_query(). После чего закрываем соединение. Для этого используем функцию mysqli_close().
1 2 3 4 5 |
<?php $contact=mysqli_connect('localhost', 'root', '', 'world'); mysqli_query($contact, "DELETE FROM `city` WHERE `id`=3;"); mysqli_close($contact); ?> |
Вот так мы реализовали удаление строк из базы. Открываем таблицу, и видим, что у нас больше нет строки с id=3.
Можно добавить проверку выполнения команды:
1 2 3 4 5 6 7 8 |
<?php $contact=mysqli_connect('localhost', 'root', '', 'world'); if(mysqli_query($contact, "DELETE FROM `city` WHERE `id`=4;")==true){ echo "Указанная строка удалена"; } mysqli_close($contact); ?> |
Но значение указанного после where столбца может быть неуникальным. Поэтому, чтобы выбрать конкретную строку, немного модифицируем запрос:
1 |
DELETE FROM `city` WHERE `id`=10 and `Name`='Tilburg' |
Заходим в таблицу и видим, что избавились от «десятой» записи.
Но точно ли была в таблице строка со значениями столбцов, указанных в запросе? Пожалуйста, вот доказательство.
Сложно!
Что касается стирания строк при закрытии страницы, то на ум приходит только такой «корявый» пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<html> <head> <title></title> </head> <body> <script> window.onbeforeunload = function (){window.open("chernovik.php")}; </script> </body> </html> |
Код скрипта (chernovik.php) у вас есть. В основе примера лежит обработка события onbeforeunload. Оно наступает после нажатия на кнопку закрытия окна в браузере или при его обновлении.
Дело в том, что это событие обрабатывается каждым браузером по-своему. Вдобавок почти все из них блокируют всплывающие окна. Так что привожу реализацию «как есть». Если у вас имеются варианты улучшения, милости просим в комментарии :).