Мы продолжаем наш курс по изучению 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 для начинающих.
Спасибо за внимание и до встречи в следующем уроке!