8.86M
Категория: ПрограммированиеПрограммирование

9 Презентация_Взаимодействие с базой данных MySQL с использованием PHP

1.

Казахский университет технологии и бизнеса им. К. Кулажанова
Факультет “Инжиниринг и информационные технологии”
Кафедра “Информационные технологии”
Наименование курса:
«Проектирование и разработка
Web - приложений»
Турсынбай Нургуль Файзуллаевна
Сеньор- лектор
e-mail: Nurgul.tursynbay@mail.ru
Астана 2025

2.

Казахский университет технологии и бизнеса им. К. Кулажанова
Взаимодействие с базой данных
MySQL с использованием PHP
Добро пожаловать на лекцию, посвященную взаимодействию PHP с базой
данных MySQL! Сегодня мы познакомимся с теоретическими аспектами
этого взаимодействия в контексте разработки динамических вебприложений.
Наша цель — понять роль базы данных в архитектуре веб-приложений,
рассмотреть принципы клиент-серверного взаимодействия, изучить
процесс передачи данных от пользователя к БД и осознать важность
безопасной обработки пользовательских данных.

3.

Казахский университет технологии и бизнеса им. К. Кулажанова
Базы данных в современных
веб-приложениях
Современные веб-приложения оперируют огромными объёмами данных:
учетными записями пользователей, контентом, заказами, сообщениями и
многим другим. Для эффективного хранения и организации этой
информации применяются системы управления базами данных (СУБД).
MySQL
PHP
Одна из наиболее популярных
Выступает в роли посредника
СУБД с открытым исходным кодом.
между интерфейсом пользователя
Использует реляционную модель
(frontend) и базой данных. С его
данных, где информация хранится
помощью можно получать,
в таблицах, связанных между
обрабатывать и возвращать
собой.
информацию.
Веб-сервер
Обрабатывает запросы
пользователя, запускает PHPскрипты и возвращает результат их
выполнения в виде HTML-страниц.

4.

Казахский университет технологии и бизнеса им. К. Кулажанова
Архитектура взаимодействия PHP и MySQL
Ввод данных пользователем
Пользователь заполняет HTML-форму на веб-странице (например, регистрация или вход в систему).
Отправка запроса на сервер
Браузер формирует HTTP-запрос и отправляет данные формы на сервер, где работает PHP.
Обработка данных PHP-скриптом
PHP получает данные из запроса и формирует SQL-запрос для взаимодействия с базой данных.
Обработка запроса MySQL
СУБД MySQL обрабатывает полученный SQL-запрос и возвращает результат PHP-скрипту.
Формирование ответа пользователю
PHP анализирует результат запроса к БД и формирует HTML-ответ, который отправляется пользователю.
Это взаимодействие является основой всех динамических веб-приложений, включая социальные сети, интернет-магазины и
информационные порталы.

5.

Казахский университет технологии и бизнеса им. К. Кулажанова
Установка соединения с базой данных
Процедурный способ
$conn = mysqli_connect(
'username',
пароль
Объектно-ориентированный способ
'localhost',
// пользователь
'database'
// сервер
'password',
//
// имя БД);if (!$conn) {
die("Ошибка: " . mysqli_connect_error());}// Работа с
$mysqli = new mysqli(
'password',
{
'localhost',
'username',
'database');if ($mysqli->connect_errno)
die("Ошибка: " . $mysqli->connect_error);}//
Работа с БД$mysqli->close();
БДmysqli_close($conn);
Установка соединения — первый шаг для любого взаимодействия с базой данных. PHP предлагает несколько способов
подключения к MySQL, включая устаревшую библиотеку mysql, современную mysqli и абстрактный интерфейс PDO, который
позволяет работать с разными типами баз данных.

6.

Казахский университет технологии и бизнеса им. К. Кулажанова
Роль SQL-запросов во взаимодействии с БД
SQL (Structured Query Language) - это язык, с помощью которого происходит
взаимодействие с реляционными базами данных. PHP формирует SQLзапросы динамически на основе данных, полученных от пользователя или
других частей программы.
SELECT
Выборка данных из таблицы по заданным условиям.
SELECT * FROM users WHERE age > 18
INSERT
Добавление новой строки в таблицу базы данных.
INSERT INTO users (name, email) VALUES ('Иван', 'ivan@example.com')
UPDATE
Обновление существующих записей в таблице.
UPDATE users SET status = 'active' WHERE id = 5
DELETE
Удаление строк из таблицы по заданному условию.
DELETE FROM users WHERE last_login < '2022-01-01'

7.

Казахский университет технологии и бизнеса им. К. Кулажанова
Выполнение SQL-запросов в PHP
Выполнение запроса
Обработка результатов
// Подготовка запроса$sql = "SELECT id, name, email
// Получение данныхif (mysqli_num_rows($result) > 0) {
FROM users
while($row = mysqli_fetch_assoc($result)) {
WHERE status = 'active'";//
Выполнение запроса$result = mysqli_query($conn,
echo "ID: " . $row["id"] .
$sql);// Проверка успешностиif (!$result) {
$row["name"] .
die("Ошибка запроса: " .
. "";
}} else {
" Имя: " .
" Email: " . $row["email"]
echo "Результатов не найдено";}
mysqli_error($conn));}
После выполнения запроса PHP получает результат в виде специального объекта, который содержит информацию о
количестве затронутых строк, идентификаторе последней вставленной записи или выбранные данные. Для SELECT-запросов
необходимо дополнительно извлечь данные с помощью специальных функций.

8.

Казахский университет технологии и бизнеса им. К. Кулажанова
Безопасность взаимодействия с базой данных
При приёме данных от пользователя необходимо помнить о возможных угрозах безопасности. Наиболее распространённой
проблемой является SQL-инъекция — внедрение вредоносного SQL-кода через формы ввода, которое может привести к
несанкционированному доступу к данным.
Подготовленные выражения
Валидация и фильтрация
Специальный механизм, отделяющий структуру SQL-
Проверка соответствия введённой информации
запроса от вводимых данных. Значения параметров
требованиям и очистка от потенциально опасных
передаются отдельно от текста запроса, что исключает
символов с помощью функций PHP.
возможность инъекции.
$email = filter_var($_POST['email'],
$stmt = $mysqli->prepare("INSERT INTO users (name,
FILTER_VALIDATE_EMAIL);$id =
email) VALUES (?, ?)");$stmt->bind_param("ss",
filter_var($_POST['id'], FILTER_VALIDATE_INT);
$name, $email);$stmt->execute();
Безопасность — ключевой компонент при работе с любой системой, обрабатывающей пользовательский ввод. Игнорирование
мер защиты может привести к серьезным проблемам, включая утечку данных и компрометацию всей системы.

9.

Казахский университет технологии и бизнеса им. К. Кулажанова
Примеры уязвимостей и их устранение
Уязвимый код
Безопасный код
$username = $_POST['username'];$password =
$username = $_POST['username'];$password =
$_POST['password'];$query = "SELECT * FROM users
$_POST['password'];$stmt = $mysqli->prepare("SELECT *
WHERE username = '$username'
FROM users
AND password =
WHERE username = ? AND password =
'$password'";$result = mysqli_query($conn, $query);//
?");$stmt->bind_param("ss", $username,
Пример инъекции:// ' OR '1'='1// Это приведет к
$password);$stmt->execute();$result = $stmt-
выборке всех пользователей!
>get_result();// Теперь инъекция невозможна, так как//
параметры передаются отдельно от запроса
В первом примере злоумышленник может ввести специально сформированную строку в поле логина, которая изменит логику
SQL-запроса. Во втором примере использование подготовленных выражений полностью устраняет эту угрозу, так как
параметры не интерпретируются как часть SQL-кода.

10.

Казахский университет технологии и бизнеса им. К. Кулажанова
Транзакции в MySQL через PHP
Транзакции — это последовательность операций с базой данных, которые выполняются как единое целое. Если хотя бы одна
операция не может быть выполнена, вся транзакция отменяется, и база данных возвращается в исходное состояние.
Фиксация или отмена
Выполнение операций
Начало транзакции
if ($everything_ok) {
$mysqli->query("UPDATE accounts
$mysqli->commit();
// Применить
SET balance = balance - 1000
изменения} else {
$mysqli-
WHERE id = 1");$mysqli-
>rollback();
Отмечает начало
>query("UPDATE accounts SET
изменения}
последовательности операций,
balance = balance + 1000 WHERE
которые должны выполняться как
id = 2");
$mysqli->begin_transaction();
// Отменить
единое целое.
Выполнение нескольких SQL-
Завершение транзакции с
запросов, которые должны быть
сохранением или отменой всех
применены вместе.
выполненных операций.
Транзакции особенно полезны в ситуациях, где нужно гарантировать целостность данных при выполнении нескольких
взаимосвязанных операций, например, при переводе денег между счетами или обновлении взаимосвязанных таблиц.

11.

Казахский университет технологии и бизнеса им. К. Кулажанова
Применение PHP и MySQL на практике
Связка PHP + MySQL является стандартом в веб-разработке и применяется в различных типах проектов. Знание взаимодействия
этих технологий — фундаментальный навык для любого веб-разработчика.
Системы аутентификации
Сайты с функциями регистрации,
авторизации и управления профилями
пользователей.
API-сервисы
Серверные части мобильных
приложений и интерфейсы для
внешних систем.
Интернет-магазины
Каталоги товаров, корзины покупок,
системы заказов и оплаты.
CMS и админ-панели
Системы управления контентом для
блогов, новостных порталов и
корпоративных сайтов.
В каждом из этих приложений PHP выполняет роль связующего звена между пользовательским интерфейсом и хранилищем
данных, обеспечивая динамическое формирование контента и обработку пользовательского ввода.

12.

Казахский университет технологии и бизнеса им. К. Кулажанова
Оптимизация запросов к базе данных
Эффективность веб-приложения во многом зависит от скорости выполнения запросов к базе данных. Оптимизация этих
запросов может значительно улучшить производительность системы в целом.
Использование индексов
Выборка только необходимых
полей
Ограничение результатов
используемых в условиях поиска
Вместо использования * следует
таблицами используйте LIMIT для
полей ускоряет выполнение
указывать только те поля,
получения только необходимого
запросов SELECT.
которые действительно нужны.
количества записей.
Создание индексов для часто
CREATE INDEX idx_username ON
SELECT id, username FROM users
users(username);
При работе с большими
SELECT * FROM products ORDER
BY date_added DESC LIMIT 10
вместо
SELECT * FROM users
Также важно учитывать кэширование результатов запросов, использование подготовленных выражений не только для
безопасности, но и для производительности, а также правильное проектирование структуры базы данных.

13.

Казахский университет технологии и бизнеса им. К. Кулажанова
Закрепление материала
Ключевые компоненты
Типичный процесс взаимодействия
MySQL — популярная СУБД для хранения
1.
структурированных данных
2. PHP-скрипт получает данные из формы
PHP — серверный язык, обеспечивающий связь между
3. Формируется и выполняется SQL-запрос
интерфейсом пользователя и базой данных
SQL — язык запросов к базе, управляющий данными
Безопасность — критически важный аспект при работе с
Пользователь вводит данные в форму
4. Результаты запроса обрабатываются
5. Пользователю отправляется ответ
пользовательскими данными
Понимание принципов взаимодействия PHP и MySQL — это фундамент для создания динамических веб-приложений. Эти знания
позволяют разрабатывать системы любой сложности: от простых контактных форм до масштабных социальных сетей и
платформ электронной коммерции.

14.

Казахский университет технологии и бизнеса им. К. Кулажанова
Вопросы для самопроверки
1
Какова роль базы данных в веб-приложении?
Подумайте о том, какие данные хранятся в БД и почему нельзя хранить их просто в файлах на сервере.
2
Как PHP взаимодействует с MySQL?
Опишите процесс от получения данных от пользователя до отправки результата обратно, включая формирование SQLзапросов.
3
Что такое SQL-запрос и какие типы запросов вы знаете?
Приведите примеры различных типов запросов и объясните, в каких ситуациях они используются.
4
Почему важно защищать базу данных от SQL-инъекций?
Объясните механизм SQL-инъекции и потенциальные последствия такой атаки для веб-приложения.
5
Какие меры безопасности можно применять при передаче данных?
Перечислите и опишите методы защиты от различных типов атак при работе с пользовательскими данными.
Попробуйте ответить на эти вопросы самостоятельно, а затем обсудите свои ответы с коллегами или преподавателем. Это
поможет закрепить полученные знания и выявить области, требующие дополнительного изучения.

15.

Казахский университет технологии и бизнеса им. К.Кулажанова
Спасибо за внимание!
English     Русский Правила