PDO атрибуты

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

При работе с PDO важно правильно настроить соединение. Это делается с помощью атрибутов через метод setAttribute() или при создании объекта PDO.

Два самых важных атрибута:

  1. PDO::ATTR_ERRMODE — режим обработки ошибок. Рекомендуется использовать PDO::ERRMODE_EXCEPTION, чтобы при ошибках SQL выбрасывались исключения (Exception), которые можно ловить через try-catch.
  2. PDO::ATTR_DEFAULT_FETCH_MODE — формат данных по умолчанию. Удобно установить PDO::FETCH_ASSOC, чтобы получать результаты как ассоциативные массивы, а не дублировать данные (индексы + ключи).

Пример: $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Список тем

1. Атрибуты и значения

id: 39239_pdo_attr_01_compare

В левой колонке приведены фрагменты XML-разметки, связанные с информацией о пользователе. В правой колонке указано, является ли каждый фрагмент содержимым элемента или частью атрибута. Сопоставьте каждый фрагмент слева с соответствующей категорией справа. Обратите внимание, что в правой колонке есть повторяющиеся подписи — это сделано намеренно, поскольку в XML может быть несколько элементов и несколько атрибутов.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
Иван
id="
100
lang="
атрибут
элемент
атрибут
элемент
Сообщения
Проверить
Показать подсказку

2. Включение исключений

id: 39239_pdo_attr_02_replace

Дополните фрагмент кода на PHP, который настраивает объект PDO для работы с базой данных. Необходимо установить атрибут, включающий режим генерации исключений при возникновении ошибок. Заполните пропуски в методе setAttribute() соответствующими константами. Обратите внимание, что в коде уже создано подключение к базе данных с использованием PDO.

Заполните пропуски
<?php
$dsn = 'mysql:host=localhost;dbname=test';
$user = 'root';
$pass = '';

try {
    $pdo = new PDO($dsn, $user, $pass);
    // Включаем режим исключений для обработки ошибок
    $pdo->setAttribute(input1S, input2S);
    echo 'Режим исключений включен';
} catch (PDOException $e) {
    echo 'Ошибка подключения: ' . $e->getMessage();
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

3. Опечатка в константе

id: 39239_pdo_attr_04_error

В этом фрагменте кода, связанном с установкой атрибутов PDO, допущена ошибка в имени константы. Найдите и исправьте строку, в которой указана несуществующая константа PDO, чтобы код корректно установил режим обработки ошибок для подключения к базе данных.

Найдите ошибку и исправьте
<?php
$dsn = 'mysql:host=localhost;dbname=test';
$username = 'root';
$password = '';
 
try {
    $pdo = new PDO($dsn, $username, $password);
    // Устанавливаем режим обработки ошибок
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_ERROR);
} catch (PDOException $e) {
    echo 'Ошибка подключения: ' . $e->getMessage();
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Настройка в конструкторе

id: 39239_pdo_attr_06_build

Из предложенных строк соберите корректный PHP-скрипт, который создаёт подключение к базе данных MySQL через PDO, передавая в конструктор массив опций (четвёртый аргумент). Массив должен содержать три наиболее важных атрибута: режим обработки ошибок (исключения), режим выборки данных по умолчанию (ассоциативный массив) и отключение эмуляции подготовленных запросов. Порядок объявлений переменных $dsn, $username и $password строго фиксирован относительно друг друга. В решении не должно быть лишних строк, которые дублируют функциональность или выполняются после создания объекта.

Перетяните в правильном порядке строки из одного блока в другой
<?php
$dsn = 'mysql:host=localhost;dbname=test_db;charset=utf8mb4';
$username = 'root';
$password = '';
$options = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false
];
$pdo = new PDO($dsn, $username, $password, $options);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING);
$pdo = new PDO($dsn, $username, $password);
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

5. Диалог: Белый экран

id: 39239_pdo_attr_07_chat

В этом задании вы пообщаетесь с виртуальным ассистентом, который столкнулся с проблемой в PHP. У него ошибка в SQL-запросе при работе с PDO, но вместо сообщения об ошибке он видит только белый экран. Вам нужно помочь ему настроить отображение ошибок, объяснив, как использовать атрибут PDO::ATTR_ERRMODE со значением PDO::ERRMODE_EXCEPTION. Отвечайте на вопросы бота, вводя код или выбирая правильные варианты.

Это визуальная эмуляция чата с заранее подготовленными вопросами и ответами. Введённые вами данные никуда не отправляются и не сохраняются.
Сообщения
Проверить
Показать подсказку

PHP: запуск кода в браузере

id: 39239_compiler
🐘
Запустить тренажёр (PHP)
НайтиКурс.Ру