METANIT.COM

Удалить строку таблицы 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 ""; foreach($result as $row)< echo ""; echo ""; echo ""; echo ""; echo ""; > echo "
ИмяВозраст
" . $row["name"] . "" . $row["age"] . "
"; > catch (PDOException $e) < echo "Database error: " . $e->getMessage(); > ?>

В таблицы для каждой строки определена форма, которая посылает данные в POST-запросе скрипту delete.php . Чтобы передать в delete.php идентификатор удаляемого объекта, на форме определено скрытое поле для хранения id объекта.

Обратите внимание, что в данном случае применяется не ссылка для удаления типа

которая оправляет данные в GET-запросе, а именно форма, которая отправляет данные в POST-запросе. Почему? Подобные GET-запросы потенциально небезопасны. Допустим, нам пришло электронное письмо, в которое была внедрена картинка посредством тега:

Читайте также:  Java jframe jbutton actionlistener

В итоге при открытии письма 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 email 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»;

// 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»;

// 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»;

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 email 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'';while($item=mysql_fetch_array($res)) echo '';echo'';echo'';echo'';echo'';echo'';echo'';>echo'
IDНаименованиеОписаниеРед.Удл.
'.$item['id'].' '.$item['title'].' '.$item['description'].' .$_SERVER['PHP_SELF'].'?action=editform&id='.$item['id'].'">Ред. .$_SERVER['PHP_SELF'].'?action=delete&id='.$item['id'].'">Удл.
'
; 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'';echo'';echo'';echo'';echo'';echo'';echo'';echo' ';echo'';echo'
Наименование .htmlspecialchars($item['title']).'">
Описание
'; 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'';while($item=mysql_fetch_array($res)) echo '';echo'';echo'';echo'';echo'';>echo'
IDНаименованиеУдл.
'.$item['id'].' '.$item['title'].' .$item['id'].'" />
'
; 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)

Источник

Оцените статью