Подключение к MySQL

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

Тренажер PHP

Для работы с базами данных в PHP существует специальное расширение — MySQLi. Оно позволяет устанавливать соединение, отправлять запросы и получать результаты. Без подключения к базе данных ваше веб-приложение не сможет сохранять информацию, будь то данные пользователей, статьи блога или товары в интернет-магазине. В этом тренажере вы пройдете путь от самых основ: научитесь правильно указывать параметры для подключения, создавать объект соединения и, что не менее важно, грамотно обрабатывать возможные ошибки, которые могут возникнуть на этом этапе. Задания построены от простого к сложному, чтобы вы могли постепенно освоить весь процесс.

Список тем

Параметры подключения и их назначение

id: 39219_task_1

Каждое подключение к базе данных требует нескольких ключевых параметров. Сопоставьте каждый параметр с его правильным описанием, чтобы понять, за что отвечает каждый из них.

Сопоставьте строки в правой части с соответствующими строками в левой по порядковому номеру
Имя хоста или IP-адрес сервера БД
Имя пользователя для доступа к БД
Пароль пользователя для доступа к БД
Имя базы данных, к которой подключаемся
username
password
hostname
database
Сообщения
Проверить
Показать подсказку

Процедурное подключение к MySQL

id: 39219_task_2

Давайте установим первое соединение с базой данных, используя процедурный подход. Заполните пропуски в коде, чтобы создать рабочее подключение. Укажите имя функции и передайте ей необходимые переменные.

Заполните пропуски
<?php
$host = "localhost";
$user = "root";
$pass = "password";
$db = "mydatabase";

// Создаем соединение
$link = input1S(input2S, input3S, input4S, input5S);

if ($link) {
    echo "Соединение установлено успешно!";
    mysqli_close($link);
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Объектно-ориентированное подключение

id: 39219_task_3

Кроме процедурного стиля, в 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();
}
?>
$hostname
$username
$password
$database
"localhost"
$mysqli
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Найдите ошибку в коде подключения

id: 39219_task_4

В этом коде есть одна небольшая, но критическая ошибка, из-за которой соединение не будет установлено. Найдите строку с ошибкой и исправьте ее.

Найдите ошибку и исправьте
<?php
$host = "localhost";
$user = "root";
$pass = "secret";
$db   = "test_db";
 
$connection = mysql_connect($host, $user, $pass, $db);
 
if (!$connection) {
    die("Ошибка подключения!");
}
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Соберите скрипт подключения с проверкой

id: 39219_task_5

Перед вами разрозненные строки кода. Соберите из них полноценный скрипт, который объявляет переменные, пытается подключиться к базе данных и проверяет, удалось ли это сделать. Лишние строки использовать не нужно.

Перетяните в правильном порядке строки из одного блока в другой
<?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();
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Обработка ошибок подключения

id: 39219_task_6

Подключение к базе данных не всегда проходит успешно. Может быть указан неверный пароль, или сервер БД недоступен. Заполните пропуски, чтобы добавить в код проверку на ошибку подключения и вывести информативное сообщение.

Заполните пропуски
<?php
$mysqli = new mysqli("localhost", "root", "wrong_password", "test");

// Проверяем соединение
if (input1S) {
    input2S("Ошибка подключения: " . input3S);
}

echo "Соединение успешно!";
$mysqli->close();
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Что выведет код при ошибке?

id: 39219_task_7

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

Выберите правильный вариант ответа
<?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!";
?>
Сообщения
Проверить
Показать подсказку

Исправьте две ошибки в ООП-стиле

id: 39219_task_8

Этот скрипт использует объектно-ориентированный стиль для подключения и установки кодировки. Однако в нем есть две ошибки: одна связана с установкой кодировки, а другая — с обращением к свойству объекта. Найдите и исправьте обе.

Найдите ошибку и исправьте
<?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.";
?>
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

Какой будет результат?

id: 39219_task_9

Проанализируйте скрипт. Он проверяет, удалось ли подключение к базе данных, и в зависимости от результата выводит одно из двух сообщений. Введите в поле ответа точную строку, которую выведет этот скрипт.

Что должно получиться?
<?php
// Предполагаем, что БД 'test' существует
$mysqli = new mysqli("localhost", "root", "", "test");

if ($mysqli->connect_errno) {
    echo "Connection Error";
} else {
    echo "Connection OK";
}
$mysqli->close();
?>
Сообщения
Проверить
Показать подсказку
НайтиКурс.Ру