Для работы с базами данных в PHP существует специальное расширение — MySQLi. Оно позволяет устанавливать соединение, отправлять запросы и получать результаты. Без подключения к базе данных ваше веб-приложение не сможет сохранять информацию, будь то данные пользователей, статьи блога или товары в интернет-магазине. В этом тренажере вы пройдете путь от самых основ: научитесь правильно указывать параметры для подключения, создавать объект соединения и, что не менее важно, грамотно обрабатывать возможные ошибки, которые могут возникнуть на этом этапе. Задания построены от простого к сложному, чтобы вы могли постепенно освоить весь процесс.
- Модуль 1: Основы синтаксиса PHP
- Модуль 2: Переменные и типы данных
- Модуль 3: Операторы
- Модуль 4: Условные конструкции
- Модуль 5: Циклы
- Модуль 6: Массивы
- Индексированные массивы.
- Ассоциативные массивы.
- Многомерные массивы.
- Добавление элементов в массив.
- Удаление элементов из массива.
- Функция count().
- Функция array_push() и array_pop().
- Функция array_shift() и array_unshift().
- Функция array_merge().
- Функция array_slice().
- Функция array_splice().
- Функция in_array().
- Функция array_search().
- Функция array_keys() и array_values().
- Функция array_unique().
- Функция array_reverse().
- Сортировка: sort(), rsort().
- Сортировка: asort(), arsort().
- Сортировка: ksort(), krsort().
- Функция array_map().
- Функция array_filter().
- Функция array_reduce().
- Функция array_walk().
- Функция array_column().
- Деструктуризация массивов.
- Модуль 7: Функции
- Объявление функций.
- Вызов функций.
- Параметры функций.
- Возврат значений return.
- Значения параметров по умолчанию.
- Передача по значению.
- Передача по ссылке.
- Переменное количество аргументов.
- Оператор распаковки ....
- Типизация параметров.
- Типизация возвращаемых значений.
- Nullable типы.
- Union типы (PHP 8).
- Именованные аргументы (PHP 8).
- Анонимные функции.
- Стрелочные функции.
- Замыкания и use.
- Рекурсивные функции.
- Глобальные переменные в функциях.
- Статические переменные в функциях.
- Модуль 8: Работа со строками
- Одинарные и двойные кавычки.
- Экранирование символов.
- Heredoc и Nowdoc синтаксис.
- Функция strlen().
- Функция substr().
- Функция str_replace().
- Функция strpos() и strrpos().
- Функция explode() и implode().
- Функция trim(), ltrim(), rtrim().
- Функция strtolower() и strtoupper().
- Функция ucfirst() и ucwords().
- Функция str_repeat().
- Модуль 9: Суперглобальные переменные
- Модуль 10: Работа с формами
- Модуль 11: Работа с файлами
- Модуль 12: Дата и время
- Модуль 13: Регулярные выражения
- Модуль 14: Сессии и Cookie
- Модуль 15: Include и Require
- Модуль 16: Объектно-ориентированное программирование
- Модуль 17: Пространства имен
- Модуль 18: Обработка ошибок и исключений
- Модуль 19: Работа с JSON и XML
- Модуль 20: Работа с базами данных MySQLi
- Подключение к MySQL.
- Модуль 21: PDO - PHP Data Objects
- Модуль 22: Composer и зависимости
- Модуль 23: cURL и HTTP запросы
- Модуль 24: REST API
- Модуль 25: Безопасность
- Модуль 26: Генераторы и итераторы
- Модуль 27: Reflection API
- Модуль 28: Работа с изображениями
- Модуль 29: Отправка email
- Модуль 30: Паттерны проектирования
- Модуль 31: Тестирование
- Модуль 32: Продвинутые возможности PHP 8+
Параметры подключения и их назначение
Каждое подключение к базе данных требует нескольких ключевых параметров. Сопоставьте каждый параметр с его правильным описанием, чтобы понять, за что отвечает каждый из них.
Процедурное подключение к MySQL
Давайте установим первое соединение с базой данных, используя процедурный подход. Заполните пропуски в коде, чтобы создать рабочее подключение. Укажите имя функции и передайте ей необходимые переменные.
<?php
$host = "localhost";
$user = "root";
$pass = "password";
$db = "mydatabase";
// Создаем соединение
$link = input1S(input2S, input3S, input4S, input5S);
if ($link) {
echo "Соединение установлено успешно!";
mysqli_close($link);
}
?>Объектно-ориентированное подключение
Кроме процедурного стиля, в PHP широко используется объектно-ориентированный подход (ООП). Соберите конструктор для создания объекта подключения к базе данных, перетащив нужные переменные из банка в правильные места.
<?php
$hostname = "127.0.0.1";
$username = "admin";
$password = "";
$database = "webapp";
// Создаем объект соединения
$mysqli = new mysqli(input1S, input2S, input3S, input4S);
if ($mysqli->connect_errno) {
echo "Не удалось подключиться к MySQL: " . $mysqli->connect_error;
} else {
echo "Подключение через ООП успешно!";
$mysqli->close();
}
?>Найдите ошибку в коде подключения
В этом коде есть одна небольшая, но критическая ошибка, из-за которой соединение не будет установлено. Найдите строку с ошибкой и исправьте ее.
<?php$host = "localhost";$user = "root";$pass = "secret";$db = "test_db"; $connection = mysql_connect($host, $user, $pass, $db); if (!$connection) { die("Ошибка подключения!");}?>Соберите скрипт подключения с проверкой
Перед вами разрозненные строки кода. Соберите из них полноценный скрипт, который объявляет переменные, пытается подключиться к базе данных и проверяет, удалось ли это сделать. Лишние строки использовать не нужно.
<?php$db_user = "user";$db_pass = "pass";$conn = mysqli_connect("localhost", $db_user, $db_pass, "main");if ($conn === false) { die("Ошибка: Невозможно подключиться к базе данных.");}echo "Подключение успешно установлено.";mysqli_close($conn);$conn = mysql_connect();if ($conn == true) {exit();Обработка ошибок подключения
Подключение к базе данных не всегда проходит успешно. Может быть указан неверный пароль, или сервер БД недоступен. Заполните пропуски, чтобы добавить в код проверку на ошибку подключения и вывести информативное сообщение.
<?php
$mysqli = new mysqli("localhost", "root", "wrong_password", "test");
// Проверяем соединение
if (input1S) {
input2S("Ошибка подключения: " . input3S);
}
echo "Соединение успешно!";
$mysqli->close();
?>Что выведет код при ошибке?
Внимательно изучите код. В нем намеренно допущена ошибка в данных для подключения. Подумайте, какая из предложенных строк будет выведена в результате выполнения этого скрипта.
<?php
// Попытка подключения с заведомо неверным паролем
$link = @mysqli_connect("localhost", "app_user", "invalid_password_123", "webapp");
if ($link === false) {
die("Access denied. Please check your credentials.");
}
echo "Welcome to our application!";
?>Исправьте две ошибки в ООП-стиле
Этот скрипт использует объектно-ориентированный стиль для подключения и установки кодировки. Однако в нем есть две ошибки: одна связана с установкой кодировки, а другая — с обращением к свойству объекта. Найдите и исправьте обе.
<?php$conn = new mysqli("localhost", "root", "", "blog"); if ($mysqli->connect_errno) { die("Connection failed: " . $conn->connect_error);} // Устанавливаем кодировку UTF-8$conn->set_charset = "utf8"; echo "Charset is set.";?>Какой будет результат?
Проанализируйте скрипт. Он проверяет, удалось ли подключение к базе данных, и в зависимости от результата выводит одно из двух сообщений. Введите в поле ответа точную строку, которую выведет этот скрипт.
<?php
// Предполагаем, что БД 'test' существует
$mysqli = new mysqli("localhost", "root", "", "test");
if ($mysqli->connect_errno) {
echo "Connection Error";
} else {
echo "Connection OK";
}
$mysqli->close();
?>