Мы продолжаем наш курс по изучению 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();
?>
Советы по безопасности:
- Перед удалением сделайте резервную копию данных.
- Используйте транзакции для групповых операций.
- Всегда проверяйте права доступа к операции DELETE.
Практические задачи
Чтобы закрепить материал, выполните следующие задания.
Задача 1: Обновление данных
- Создайте таблицу
productsс полямиid,name,price,quantity. - Добавьте 5 тестовых записей.
- Напишите скрипт на 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: Удаление данных
- В таблице
usersдобавьте полеlast_login(тип DATETIME). - Напишите скрипт, который удаляет пользователей, не заходивших в систему более года.
Решение:
<?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();
?>
Частые ошибки
- Пропуск условия WHERE в UPDATE или DELETE.
- Результат: Все данные обновлены или удалены.
- Совет: Перед запуском запроса проверьте его в phpMyAdmin или другом клиенте.
- Неправильные типы данных.
Например, передача строки вместо числа вWHERE id = '5'.- Совет: Используйте привязку параметров с указанием типа (
bind_param("i", $id)в mysqli).
- Совет: Используйте привязку параметров с указанием типа (
- Игнорирование транзакций при массовых операциях.
- Совет: Если вы обновляете или удаляете много строк, используйте транзакции для отката в случае ошибки.
Чтобы продолжить обучение, переходите по ссылке: полный курс по PHP для начинающих.
Спасибо за внимание и до встречи в следующем уроке!
Поддержка автора осуществляется с помощью специальной формы ниже, предоставленной сервисом «ЮMoney». Все платёжные операции выполняются на защищённой странице сервиса, что обеспечивает их корректность и полную безопасность.


