Урок 29: Обновление и удаление данных на PHP

Мы продолжаем наш курс по изучению PHP для начинающих. В предыдущих уроках мы разобрались, как создавать базы данных, добавлять и извлекать информацию. Сегодня мы переходим к важной теме, обновлению и удалению данных. Это ключевые операции в работе с базами данных, но они требуют аккуратности. Одно неверное действие может привести к потере информации.

Обновление записей (UPDATE)

Операция UPDATE позволяет изменять существующие данные в таблице. Она незаменима, когда нужно исправить ошибку, обновить статус пользователя или изменить любую другую информацию.

Синтаксис запроса UPDATE

Базовый синтаксис выглядит так:

UPDATE таблица 
SET столбец1 = значение1, столбец2 = значение2, ... 
WHERE условие;
  • таблица имя таблицы, которую нужно обновить.
  • SET указывает столбцы и новые значения.
  • WHERE определяет, какие строки обновлять. Если пропустить WHERE, обновятся все строки в таблице!

Пример 1: Обновление одного поля

Допустим, у нас есть таблица users и мы хотим изменить email пользователя с id = 5:

UPDATE users 
SET email = 'new_email@example.com' 
WHERE id = 5;

Пример 2: Обновление нескольких полей

Изменим имя и статус пользователя:

UPDATE users 
SET name = 'Алексей', status = 'active' 
WHERE id = 5;

Использование PHP для выполнения UPDATE

На практике мы будем выполнять запросы через PHP. Вот пример с использованием PDO:

<?php 
try {
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $stmt = $pdo->prepare("UPDATE users SET email = :email WHERE id = :id");
    $stmt->execute([
        'email' => 'new_email@example.com',
        'id' => 5
    ]);
    echo "Данные обновлены!";
} catch (PDOException $e) {
    echo "Ошибка: " . $e->getMessage();
}
?>

А вот пример с mysqli:

<?php 
$mysqli = new mysqli("localhost", "username", "password", "test");
if ($mysqli->connect_error) {
    die("Ошибка подключения: " . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("UPDATE users SET email = ? WHERE id = ?");
$stmt->bind_param("si", $email, $id);

$email = "new_email@example.com";
$id = 5;
$stmt->execute();

echo "Данные обновлены!";
$stmt->close();
$mysqli->close();
?>

Важно!

  • Всегда используйте подготовленные запросы (как в примерах выше), чтобы избежать SQL-инъекций.
  • Перед выполнением UPDATE проверяйте условие WHERE,  убедитесь что оно точно указывает на нужные строки.

Удаление записей (DELETE)

Операция DELETE удаляет строки из таблицы. Это необратимая операция, поэтому будьте предельно внимательны!

Синтаксис запроса DELETE

Базовый синтаксис:

DELETE FROM таблица 
WHERE условие;
  • Если не указать WHERE, удалятся все данные из таблицы!

Пример 1: Удаление одной записи

Удалим пользователя с id = 10:

DELETE FROM users 
WHERE id = 10;

Пример 2: Удаление по условию

Удалим всех неактивных пользователей:

DELETE FROM users 
WHERE status = 'inactive';

Использование PHP для выполнения DELETE

Пример с PDO:

<?php 
try {
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $stmt = $pdo->prepare("DELETE FROM users WHERE id = :id");
    $stmt->execute(['id' => 10]);
    echo "Запись удалена!";
} catch (PDOException $e) {
    echo "Ошибка: " . $e->getMessage();
}
?>

Пример с mysqli:

<?php 
$mysqli = new mysqli("localhost", "username", "password", "test");
if ($mysqli->connect_error) {
    die("Ошибка подключения: " . $mysqli->connect_error);
}

$stmt = $mysqli->prepare("DELETE FROM users WHERE id = ?");
$stmt->bind_param("i", $id);

$id = 10;
$stmt->execute();

echo "Запись удалена!";
$stmt->close();
$mysqli->close();
?>

Советы по безопасности:

  1. Перед удалением сделайте резервную копию данных.
  2. Используйте транзакции для групповых операций.
  3. Всегда проверяйте права доступа к операции DELETE.

Практические задачи

Чтобы закрепить материал, выполните следующие задания.

Задача 1: Обновление данных

  1. Создайте таблицу products с полями idnamepricequantity.
  2. Добавьте 5 тестовых записей.
  3. Напишите скрипт на PHP, который увеличивает цену всех товаров на 10%.

Решение:

<?php 
// Подключение к базе данных (пример для PDO)
try {
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $stmt = $pdo->prepare("UPDATE products SET price = price * 1.1");
    $stmt->execute();
    echo "Цены обновлены!";
} catch (PDOException $e) {
    echo "Ошибка: " . $e->getMessage();
}
?>

Задача 2: Удаление данных

  1. В таблице users добавьте поле last_login (тип DATETIME).
  2. Напишите скрипт, который удаляет пользователей, не заходивших в систему более года.

Решение:

<?php 
// Удаление неактивных пользователей (пример для mysqli)
$mysqli = new mysqli("localhost", "username", "password", "test");
if ($mysqli->connect_error) {
    die("Ошибка подключения: " . $mysqli->connect_error);
}

$query = "DELETE FROM users WHERE last_login < NOW() - INTERVAL 1 YEAR";
if ($mysqli->query($query) === TRUE) {
    echo "Неактивные пользователи удалены!";
} else {
    echo "Ошибка: " . $mysqli->error;
}

$mysqli->close();
?>

Частые ошибки

  1. Пропуск условия WHERE в UPDATE или DELETE.
    • Результат: Все данные обновлены или удалены.
    • Совет: Перед запуском запроса проверьте его в phpMyAdmin или другом клиенте.
  2. Неправильные типы данных.
    Например, передача строки вместо числа в WHERE id = '5'.

    • Совет: Используйте привязку параметров с указанием типа (bind_param("i", $id) в mysqli).
  3. Игнорирование транзакций при массовых операциях.
    • Совет: Если вы обновляете или удаляете много строк, используйте транзакции для отката в случае ошибки.

Чтобы продолжить обучение, переходите по ссылке: полный курс по PHP для начинающих.

Спасибо за внимание и до встречи в следующем уроке!

Поделиться статьей:
Поддержать автора блога

Поддержка автора осуществляется с помощью специальной формы ниже, предоставленной сервисом «ЮMoney». Все платёжные операции выполняются на защищённой странице сервиса, что обеспечивает их корректность и полную безопасность.

Персональные рекомендации
Оставить комментарий