Подключение к MySQL с помощью PDO
Создавайте подключение PDO, указав DSN, имя пользователя и пароль
«Подключение к MySQL с помощью PDO» — бесплатный урок PHP Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Что такое PDO
PDO (объекты данных PHP) — это слой абстракции доступа к базе данных. Один API работает с MySQL, PostgreSQL, SQLite и другими системами — достаточно изменить DSN.
DSN
Строка DSN (имя источника данных) определяет драйвер, узел, порт и имя базы данных.
<?php
$dsn = "mysql:host=127.0.0.1;port=3306;dbname=myapp;charset=utf8mb4";Создание экземпляра PDO
Передайте DSN, имя пользователя и пароль конструктору PDO. Оберните вызов в try/catch, чтобы обрабатывать ошибки подключения.
<?php
try {
$pdo = new PDO(
"mysql:host=127.0.0.1;dbname=myapp;charset=utf8mb4",
"db_user",
"db_pass"
);
} catch (PDOException $e) {
die("Connection failed: ".$e->getMessage());
}Режим ошибок
Установите режим ошибок, при котором выбрасываются исключения, чтобы ошибки никогда не игнорировались молча.
<?php
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);Режим выборки по умолчанию
Настройте стиль выборки по умолчанию — ассоциативные массивы наиболее удобны.
<?php
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);Полная настройка подключения
Рекомендуемый подход: один раз создайте PDO со всеми атрибутами, а затем передавайте этот экземпляр в нужные места.
<?php
function createPDO(): PDO {
return new PDO(
"mysql:host=127.0.0.1;dbname=myapp;charset=utf8mb4",
"root", "secret",
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
]
);
}Эмулируемые подготовленные выражения
Установка ATTR_EMULATE_PREPARES в значение false использует настоящие подготовленные выражения на стороне сервера — это безопаснее и эффективнее.
charset=utf8mb4
Всегда указывайте charset=utf8mb4 в DSN. Это поддерживает полный диапазон Unicode, включая эмодзи. Никогда не используйте старый псевдоним utf8.
Выполнение простого запроса
Используйте query() только для операторов, не содержащих пользовательских данных.
<?php
$stmt = $pdo->query("SELECT COUNT(*) as total FROM users");
$row = $stmt->fetch();
echo $row["total"];exec() для операторов, отличных от SELECT
exec() выполняет оператор, не возвращающий результат, и возвращает количество затронутых строк.
<?php
$count = $pdo->exec("DELETE FROM sessions WHERE expires_at < NOW()");
echo "Deleted $count expired sessions";Постоянные подключения
PDO поддерживает постоянные подключения через PDO::ATTR_PERSISTENT => true. В средах PHP-FPM обычно предпочтительнее использовать пул подключений.
Итоги
Создайте PDO с DSN, установите ERRMODE_EXCEPTION и FETCH_ASSOC, отключите эмулируемые подготовленные выражения. Никогда не вызывайте query() с данными, предоставленными пользователем, — используйте подготовленные выражения.
Быстрая проверка
Какой атрибут заставляет PDO выбрасывать исключения при ошибках?
Часто задаваемые вопросы
Урок «Подключение к MySQL с помощью PDO» бесплатный?
Да — полный текст урока «Подключение к MySQL с помощью PDO» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Подключение к MySQL с помощью PDO»?
Создавайте подключение PDO, указав DSN, имя пользователя и пароль Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Подключение к MySQL с помощью PDO»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Подключение к MySQL с помощью PDO
- Подготовленные выражения и привязка параметров
- Получение результатов с помощью PDO
- Транзакции с PDO