/
Francuz
/
DailyPort
Обзор
Документация
Войти
/
Francuz
/
DailyPort
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/Database.php
73 строки
3 KB
Francuz
docs: подробные комментарии ко всем PHP-файлам проекта
15 июн 2026, 08:08
15 июн 2026, 08:08
594585d
Код
Авторство
О чём код?
<?php /** * Класс Database — обёртка над mysqli для работы с MySQL. * * Предоставляет методы для: * - подключения к БД с указанием кодировки * - выполнения SQL-запросов * - экранирования строк (с конвертацией из Windows-1251 в UTF-8) * - закрытия соединения */ class Database { /** @var mysqli|null Соединение с базой данных */ private $connection; /** * Конструктор — устанавливает соединение с MySQL. * * @param array $config Ассоциативный массив с ключами: host, user, password, database, charset */ public function __construct(array $config) { $this->connection = new mysqli( $config['host'], $config['user'], $config['password'], $config['database'] ); if ($this->connection->connect_error) { die('Ошибка подключения: ' . $this->connection->connect_error); } // Устанавливаем кодировку соединения (по умолчанию utf8mb4) $this->connection->set_charset($config['charset'] ?? 'utf8'); } /** * Выполняет SQL-запрос и возвращает результат. * * @param string $sql SQL-запрос * @return mysqli_result|bool Результат запроса или false при ошибке */ public function query(string $sql) { return $this->connection->query($sql); } /** * Экранирует строку для безопасной вставки в SQL-запрос. * * Если строка не в UTF-8, конвертирует из Windows-1251 (для совместимости * с данными, введёнными через curl на Windows). * * @param string $value Входная строка * @return string Экранированная строка */ public function escape(string $value): string { if (!mb_check_encoding($value, 'UTF-8')) { $value = mb_convert_encoding($value, 'UTF-8', 'Windows-1251'); } return $this->connection->real_escape_string($value); } /** * Закрывает соединение с базой данных. */ public function close() { $this->connection->close(); } }