Удалить строку таблицы php
Для удаления данных применяется sql-команда DELETE :
DELETE FROM Таблица WHERE столбец = значение
Для удаления данных также может применяться метод exec() объекта PDO. Например, возьмем использованную в прошлых темах таблицу Users со следующим определением:
CREATE TABLE Users (id INTEGER AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), age INTEGER)
Удалим из этой таблицы строку, где id = 5 :
exec($sql); echo "Удалено строк: $affectedRowsNumber"; > catch (PDOException $e) < echo "Database error: " . $e->getMessage(); > ?>
Результат метода $conn->exec() в данном случае количество удаленых строк. Однако опять же поскольку значение столбца, на основе которого происходит удаление, нередко приходит извне, то в этом случае лучше использовать параметризацию.
Итак, определим для вывода всех объектов из БД скрипт index.php :
Список пользователей
query($sql); echo "
Имя | Возраст | |
---|---|---|
" . $row["name"] . " | "; echo "" . $row["age"] . " | "; echo ""; echo " |
В таблицы для каждой строки определена форма, которая посылает данные в POST-запросе скрипту delete.php . Чтобы передать в delete.php идентификатор удаляемого объекта, на форме определено скрытое поле для хранения id объекта.
Обратите внимание, что в данном случае применяется не ссылка для удаления типа
которая оправляет данные в GET-запросе, а именно форма, которая отправляет данные в POST-запросе. Почему? Подобные GET-запросы потенциально небезопасны. Допустим, нам пришло электронное письмо, в которое была внедрена картинка посредством тега:
В итоге при открытии письма 1-я запись в таблице может быть удалена. Уязвимость касается не только писем, но может проявляться и в других местах, но смысл один — GET-запрос к скрипту, который удаляет данные, несет потенциальную уязвимость.
Теперь определим сам скрипт delete.php , который будет выполнять удаление:
prepare($sql); $stmt->bindValue(":userid", $_POST["id"]); $stmt->execute(); header("Location: index.php"); > catch (PDOException $e) < echo "Database error: " . $e->getMessage(); > > ?>
В данном случае скрипт получает через POST-запрос значение id и по этому идентификатору выполняет удаление. После чего происходит переадресация на скрипт index.php .
PHP MySQL Delete Data
Delete Data From a MySQL Table Using MySQLi and PDO
The DELETE statement is used to delete records from a table:
Notice the WHERE clause in the DELETE syntax: The WHERE clause specifies which record or records that should be deleted. If you omit the WHERE clause, all records will be deleted!
To learn more about SQL, please visit our SQL tutorial.
Let’s look at the «MyGuests» table:
id | firstname | lastname | reg_date | |
---|---|---|---|---|
1 | John | Doe | john@example.com | 2014-10-22 14:26:15 |
2 | Mary | Moe | mary@example.com | 2014-10-23 10:22:30 |
3 | Julie | Dooley | julie@example.com | 2014-10-26 10:48:23 |
The following examples delete the record with in the «MyGuests» table:
Example (MySQLi Object-oriented)
$servername = «localhost»;
$username = «username»;
$password = «password»;
$dbname = «myDB»;
?php
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) die(«Connection failed: » . $conn->connect_error);
>
// sql to delete a record
$sql = «DELETE FROM MyGuests WHERE ($conn->query($sql) === TRUE) echo «Record deleted successfully»;
> else echo «Error deleting record: » . $conn->error;
>
Example (MySQLi Procedural)
$servername = «localhost»;
$username = «username»;
$password = «password»;
$dbname = «myDB»;
?php
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) die(«Connection failed: » . mysqli_connect_error());
>
// sql to delete a record
$sql = «DELETE FROM MyGuests WHERE (mysqli_query($conn, $sql)) echo «Record deleted successfully»;
> else echo «Error deleting record: » . mysqli_error($conn);
>
Example (PDO)
$servername = «localhost»;
$username = «username»;
$password = «password»;
$dbname = «myDBPDO»;
?php
try $conn = new PDO(«mysql:host=$servername;dbname=$dbname», $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// sql to delete a record
$sql = «DELETE FROM MyGuests WHERE // use exec() because no results are returned
$conn->exec($sql);
echo «Record deleted successfully»;
> catch(PDOException $e) echo $sql . «
» . $e->getMessage();
>
After the record is deleted, the table will look like this:
id | firstname | lastname | reg_date | |
---|---|---|---|---|
1 | John | Doe | john@example.com | 2014-10-22 14:26:15 |
2 | Mary | Moe | mary@example.com | 2014-10-23 10:22:30 |
Добавление и удаление строк таблицы БД
Большинство современных сайтов работают на какой-нибудь CMS. Вся информация, как правило, хранится в базе данных. Когда мы через админку добавляем, удаляем, редактируем новости или статьи — фактически, мы добавляем, удаляем, редактируем записи в таблице БД. Посмотрим, как мог бы выглядеть такой скрипт.
$actions = array('showlist', 'addform', 'add', 'editform', 'update', 'delete'); $action = 'showlist'; if ( isset($_GET['action']) and in_array($_GET['action'], $actions) ) $action= $_GET['action']; switch ( $action ) case 'showlist': // Список всех записей в таблице БД show_list(); break; case 'addform': // Форма для добавления новой записи get_add_item_form(); break; case 'add': // Добавить новую запись в таблицу БД add_item(); break; case 'editform': // Форма для редактирования записи get_edit_item_form(); break; case 'update': // Обновить запись в таблице БД update_item(); break; case 'delete': // Удалить запись в таблице БД delete_item(); break; > // Функция выводит список всех записей в таблице БД function show_list() $query = "SELECT `id`, `title`, `description` FROM `items` WHERE 1"; $res = mysql_query( $query ); echo 'Список
'; echo ''; echo 'ID Наименование Описание Ред. Удл. '; while ( $item = mysql_fetch_array( $res ) ) echo ''; echo ''.$item['id'].' '; echo ''.$item['title'].' '; echo ''.$item['description'].' '; echo '.$_SERVER['PHP_SELF'].'?action=editform&id='.$item['id'].'">Ред. '; echo '.$_SERVER['PHP_SELF'].'?action=delete&id='.$item['id'].'">Удл. '; echo ' '; > echo '
'; echo '.
$_SERVER['PHP_SELF'].'?action=addform">Добавить'; > // Функция формирует форму для добавления записи в таблице БД function get_add_item_form() echo 'Добавить
'; echo '$_SERVER['PHP_SELF'].'?action=add" method="post">'; echo ''; echo ''; echo 'Наименование '; echo ' '; echo ' '; echo ''; echo 'Описание '; echo ' '; echo ' '; echo ''; echo ' '; echo ' '; echo ' '; echo '
'; echo ''; > // Функция добавляет новую запись в таблицу БД function add_item() $title = mysql_escape_string( $_POST['title'] ); $description = mysql_escape_string( $_POST['description'] ); $query = "INSERT INTO items (title, description) VALUES ('".$title."', '".$description."');"; mysql_query ( $query ); header( 'Location: '.$_SERVER['PHP_SELF'] ); die(); > // Функция формирует форму для редактирования записи в таблице БД function get_edit_item_form() echo 'Редактировать
'; $query = "SELECT `title`, `description` FROM items WHERE `id` color:#FF0000">.$_GET['id']; $res = mysql_query( $query ); $item = mysql_fetch_array( $res ); echo '$_SERVER['PHP_SELF'].'?action=update&id='.$_GET['id'].'" method="POST">'; echo ''; echo ''; echo 'Наименование '; echo '.htmlspecialchars($item['title']).'"> '; echo ' '; echo ''; echo 'Описание '; echo ' '; echo ' '; echo ''; echo ' '; echo ' '; echo ' '; echo '
'; echo ''; > // Функция обновляет запись в таблице БД function update_item() $title = mysql_escape_string( $_POST['title'] ); $description = mysql_escape_string( $_POST['description'] ); $query = "UPDATE `items` SET `title`='".$title."', `description`='".$description."' WHERE `id` color:#FF0000">.$_GET['id']; mysql_query ( $query ); header( 'Location: '.$_SERVER['PHP_SELF'] ); die(); > // Функция удаляет запись в таблице БД function delete_item() $query = "DELETE FROM `items` WHERE `id` color:#FF0000">.$_GET['id']; mysql_query ( $query ); header( 'Location: '.$_SERVER['PHP_SELF'] ); die(); > ?>
Выбор и удаление нескольких записей
При создании админки часто встает задача выбора или удаления сразу нескольких записей из базы данных. Для этого обычно создается HTML-форма с набором флажков:
type="checkbox" name="item[]" value="15" /> type="checkbox" name="item[]" value="17" /> type="checkbox" name="item[]" value="22" /> type="checkbox" name="item[]" value="25" /> type="checkbox" name="item[]" value="32" />
Скрипт, формирующий список элементов checkbox формы, и удаляющий выбранные записи может выглядеть так:
echo 'Список
'; echo '$_SERVER['PHP_SELF'].'" method="POST">'; $query = "SELECT `id`, `title` FROM `items` WHERE 1"; $res = mysql_query( $query ); echo '';; echo 'ID Наименование Удл. '; while ( $item = mysql_fetch_array( $res ) ) echo ''; echo ''.$item['id'].' '; echo ''.$item['title'].' '; echo '.$item['id'].'" /> '; echo ' '; > echo '
'; echo ''; echo ''; if ( isset ( $_POST['item'] ) ) $ids = implode( ',', $_POST['item'] ); $query = 'DELETE FROM `items` WHERE `id` IN ('.$ids.')'; mysql_query( $query ); header( 'Location: '.$_SERVER['PHP_SELF'] ); > ?>
Массив $_POST[‘item’] содержит ID всех отмеченных checkbox-ов (не отмеченные на сервер не передаются). Запрос к БД на удаление выглядит так:
DELETE FROM `items` WHERE `id` IN (6,9,11,12);
Если стоит задача не удаления записей, а их выборки, то вместо оператора DELETE следует использовать оператор SELECT .
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- 1С:Предприятие (31)
- API (29)
- Bash (43)
- CLI (99)
- CMS (139)
- CSS (50)
- Frontend (75)
- HTML (66)
- JavaScript (150)
- Laravel (72)
- Linux (146)
- MySQL (76)
- PHP (125)
- React.js (66)
- SSH (27)
- Ubuntu (68)
- Web-разработка (509)
- WordPress (73)
- Yii2 (69)
- БазаДанных (95)
- Битрикс (66)
- Блог (29)
- Верстка (43)
- ИнтернетМагаз… (84)
- КаталогТоваров (87)
- Класс (30)
- Клиент (27)
- Ключ (28)
- Команда (68)
- Компонент (60)
- Конфигурация (62)
- Корзина (32)
- ЛокальнаяСеть (28)
- Модуль (34)
- Навигация (31)
- Настройка (140)
- ПанельУправле… (29)
- Плагин (33)
- Пользователь (26)
- Практика (99)
- Сервер (74)
- Событие (27)
- Теория (105)
- Установка (66)
- Файл (47)
- Форма (58)
- Фреймворк (192)
- Функция (36)
- ШаблонСайта (68)