02. Работа с MySQL и подключение через PDO

Введение в MySQL

MySQL — это одна из самых популярных систем управления базами данных. Она хранит информацию в таблицах и позволяет быстро получать, добавлять и изменять данные.
База данных — это как таблица в Excel, только хранится на сервере и к ней можно обращаться через код.

Где использовать MySQL

  • Хранение пользователей (логин, пароль, email)
  • Комментарии, посты, заказы
  • Любые данные, которые нужно сохранять между посещениями сайта

Создание базы данных

Самый простой способ — через phpMyAdmin, который уже установлен с XAMPP, Laragon или OpenServer.
  1. Откройте http://localhost/phpmyadmin
  2. Нажмите «Создать базу данных»
  3. Введите имя: my_app
  4. Выберите кодировку: utf8mb4_general_ci
  5. Нажмите «Создать»

Теперь у вас есть пустая база данных с именем my_app.

Создадим таблицу пользователей

В phpMyAdmin выберите базу my_app и создайте таблицу users:
  • id — INT, AUTO_INCREMENT, PRIMARY KEY
  • name — VARCHAR(100)
  • email — VARCHAR(150)
  • password — VARCHAR(255)
  • created_at — TIMESTAMP (по умолчанию CURRENT_TIMESTAMP)

SQL-запрос для создания таблицы:


CREATE TABLE users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  email VARCHAR(150) NOT NULL UNIQUE,
  password VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Теперь можно переходить к подключению через PHP.

Что такое PDO

PDO (PHP Data Objects) — это универсальный способ работы с базами данных. Его преимущества:
  • Поддержка множества СУБД (MySQL, PostgreSQL, SQLite и др.)
  • Безопасность благодаря подготовленным выражениям (prepared statements)
  • Удобный интерфейс и гибкость

Подключение к MySQL через PDO

Создайте файл db_connect.php:

<?php
$host = 'localhost';
$db   = 'my_app';
$user = 'root';
$pass = '';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset"; $options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ];

try { $pdo = new PDO($dsn, $user, $pass, $options); echo 'Подключение успешно!'; } catch (PDOException $e) { echo 'Ошибка подключения: ' . $e->getMessage(); } ?>

Разбор кода

  • $dsn — строка подключения (Data Source Name), содержит тип БД, хост, имя и кодировку.
  • PDO::ATTR_ERRMODE — вывод ошибок в виде исключений (удобно для отладки).
  • PDO::FETCH_ASSOC — возвращает строки как ассоциативный массив.
  • try/catch — перехватывает ошибки подключения.

Добавление данных в таблицу

Добавим одного пользователя в таблицу users:

<?php
require 'db_connect.php';

$sql = 'INSERT INTO users (name, email, password) VALUES (?, ?, ?)'; $stmt = $pdo->prepare($sql); $stmt->execute(['Иван', 'ivan@mail.com', md5('12345')]);

echo 'Пользователь добавлен!'; ?>

Такой запрос безопасен — даже если кто-то введёт вредоносные данные, PDO предотвратит SQL-инъекцию.

Выборка данных


<?php
$stmt = $pdo->query('SELECT * FROM users');
foreach ($stmt as $row) {
  echo $row['name'] . ' (' . $row['email'] . ')<br>';
}
?>

Обновление и удаление


// Обновить имя пользователя
$stmt = $pdo->prepare('UPDATE users SET name = ? WHERE id = ?');
$stmt->execute(['Алексей', 1]);

// Удалить пользователя $stmt = $pdo->prepare('DELETE FROM users WHERE id = ?'); $stmt->execute([2]);

Типичные ошибки

  • Ошибка "Access denied" — проверьте логин и пароль MySQL (обычно root / пустой пароль)
  • Ошибка "Unknown database" — база данных my_app не создана
  • Ошибка "could not find driver" — не установлен модуль pdo_mysql; активируйте его в php.ini

Мини-практика

Создайте скрипт users_list.php, который подключается к БД и выводит список всех пользователей в таблице:

<!doctype html>
<html lang='ru'>
<head><meta charset='utf-8'><title>Пользователи</title></head>
<body>
<h2>Список пользователей</h2>
<?php
require 'db_connect.php';
$stmt = $pdo->query('SELECT * FROM users');
while ($row = $stmt->fetch()) {
  echo '<p>[/b]' . $row['name'] . '[/b] — ' . $row['email'] . '</p>';
}
?>
</body>
</html>

Итоги урока

Вы научились:
  • Создавать базы данных и таблицы в phpMyAdmin
  • Подключаться к MySQL через PDO
  • Выполнять запросы SELECT, INSERT, UPDATE, DELETE
  • Использовать подготовленные выражения для защиты от SQL-инъекций