На 27 уроке мы погрузимся в одну из ключевых тем PHP, это работу с базами данных. Почти каждое веб-приложение так или иначе взаимодействует с данными, сохраняет пользователей, обрабатывает заказы, хранит контент. И для этого важно уметь «общаться» с базами данных. В этом уроке я научу вас подключаться к MySQL, выполнять запросы и выбирать между PDO и mysqli.
Базы данных (БД) это «хранилища» информации. Например, когда вы регистрируетесь на сайте, ваш логин и пароль сохраняются в БД. PHP предоставляет два основных способа работы с MySQL: mysqli и PDO (PHP Data Objects). Оба инструмента решают одну задачу — взаимодействие с БД, но подходы у них разные. Давайте разбираться.
1. Подключение через mysqli
mysqli (MySQL Improved) расширение PHP, созданное специально для работы с MySQL.
Оно поддерживает как процедурный, так и объектно-ориентированный стиль программирования.
Как подключиться к базе данных?
Для подключения понадобятся:
- Хост (обычно
localhost
). - Имя пользователя БД.
- Пароль.
- Название базы данных.
Пример подключения (объектно-ориентированный стиль):
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";
// Создаем соединение
$conn = new mysqli($servername, $username, $password, $dbname);
// Проверяем подключение
if ($conn->connect_error) {
die("Ошибка подключения: " . $conn->connect_error);
}
echo "Успешное подключение!";
?>
Что здесь происходит?
- Создаем объект
mysqli
, передавая параметры подключения. - Проверяем, есть ли ошибки (
connect_error
). - Если ошибка есть — завершаем скрипт и выводим сообщение.
Выполнение простых запросов
Предположим, у нас есть таблица users
:
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) );
Пример 1: Вставка данных
$sql = "INSERT INTO users (name, email) VALUES ('Максим', 'max@example.com')"; if ($conn->query($sql) === TRUE) { echo "Данные добавлены!"; } else { echo "Ошибка: " . $conn->error; }
Пример 2: Выборка данных
$sql = "SELECT * FROM users"; $result = $conn->query($sql); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { echo "ID: " . $row["id"] . ", Имя: " . $row["name"]; } } else { echo "Нет данных."; }
Всегда закрывайте соединение после работы:
$conn->close();
2. Подключение через PDO
PDO более универсальное расширение. Оно работает не только с MySQL, но и с другими СУБД (PostgreSQL, SQLite). PDO использует подготовленные запросы, что повышает безопасность.
Подключение к БД
Пример:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Успешное подключение!";
} catch (PDOException $e) {
echo "Ошибка подключения: " . $e->getMessage();
}
?>
Пояснение:
try...catch
ловит исключения (ошибки).setAttribute()
настраивает режим ошибок.
Выполнение запросов через PDO
Пример 1: Вставка данных с подготовленным запросом
$name = "Максим"; $email = "max@example.com"; $sql = "INSERT INTO users (name, email) VALUES (:name, :email)"; $stmt = $conn->prepare($sql); // Привязываем параметры $stmt->bindParam(':name', $name); $stmt->bindParam(':email', $email); if ($stmt->execute()) { echo "Данные добавлены!"; } else { echo "Ошибка."; }
Пример 2: Выборка данных
$sql = "SELECT * FROM users"; $stmt = $conn->query($sql); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); if (count($result) > 0) { foreach ($result as $row) { echo "ID: " . $row["id"] . ", Имя: " . $row["name"]; } } else { echo "Нет данных."; }
Почему подготовленные запросы безопаснее?
Они отделяют данные от SQL-кода, предотвращая инъекции.
PDO или mysqli: что выбрать?
- PDO подходит, если вы планируете работать с разными СУБД.
- mysqli, если уверены, что будете использовать только MySQL.
Практические задачи
Задача 1: Создайте таблицу
Напишите скрипт, который создает таблицу products
с полями:
id
(INT, первичный ключ),title
(VARCHAR(100)),price
(DECIMAL(10,2)).
Подсказка: Используйте SQL-запрос CREATE TABLE
.
Задача 2: Добавьте данные
С помощью mysqli или PDO добавьте в таблицу users
нового пользователя.
Пример данных:
- Имя: «Анна»,
- Email: «max@test.ru».
Задача 3: Выведите данные
Напишите скрипт, который выводит все товары из таблицы products
.
Итоги 27-го урока
Сегодня вы научились подключаться к MySQL через mysqli и PDO, выполнять запросы и защищаться от SQL-инъекций. Обязательно практикуйтесь, напишите собственные скрипты для вставки, обновления и удаления данных.
Если хотите глубже изучить PHP, посмотрите полный курс с уроками для начинающих.