Config = $config; // Устанавливаю обработчик исключений $this->OnException = $onException; try { // Загружаю параметры подключения // - хост $host = $this->Config->Host; // - порт $port = $this->Config->Port; // - имя базы данных $dbname = $this->Config->Name; // - пользователь $user = $this->Config->UserName; // - пароль $password = $this->Config->Password; // Создаю dsn $dsn = match ($this->Config->Driver) { DBDriver::MySQL => "mysql:host=$host;port=$port;dbname=$dbname", DBDriver::MSSQL => "sqlsrv:Server=$host,$port;Database=$dbname;Encrypt=false;", DBDriver::PostgreSQL => "pgsql:host=$host;port=$port;dbname=$dbname;", DBDriver::OracleDB => "oci:dbname=$host:$port/$dbname", DBDriver::SQLite => "sqlite:$dbname" }; // Задаю DBSign // - Open $this->DBSignOpen = match ($this->Config->Driver) { DBDriver::MySQL, DBDriver::SQLite => '`', DBDriver::MSSQL => '[', DBDriver::PostgreSQL, DBDriver::OracleDB => '"' }; // - Close $this->DBSignClose = match ($this->Config->Driver) { DBDriver::MySQL, DBDriver::SQLite => '`', DBDriver::MSSQL => ']', DBDriver::PostgreSQL, DBDriver::OracleDB => '"' }; // Создаю объект для связи с базой данных $this->DataBaseHandle = new PDO($dsn, username: $user, password: $password); // Устанавливаю уровень ошибок $this->DataBaseHandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOException $e) { $this->HandleException($e); } } /** * Деструктор. Закрывает соединение с базой данных */ public function __destruct () { $this->DataBaseHandle = null; } // Транзакции use DatabaseTransactions; // Запросы Query и Execute use DatabaseQueryExecute; // Вставка данных use DatabaseInsert; // Получение данных use DatabaseGet; // Проверка существования и получение количества строк use DatabaseCountExist; // Обновление записей use DatabaseUpdate; // Приватные методы use DatabaseSpecial; /** * Удаляет строки по условию. * * @param string $table Имя таблицы * @param array $where Массив условий * * @return bool Результат выполнения */ public function Delete (string $table, array $where = []): bool { // Обработанные параметры $params = []; // Строковая интерпретация массива условий $sql_where = $this->PrepareQueryWhere(where: $where, params: $params); // Создаю запрос $sql = "DELETE FROM $this->DBSignOpen$table$this->DBSignClose"; // Если заданы where-параметры if (count($where) > 0) { // - то добавляю их $sql .= " WHERE $sql_where"; } // Выполняю запрос $count = $this->Execute($sql, $params); // Если результат - false if ($count === false) // - то и общий результат - false return false; // Если изменено 0 строк if ($count === 0) // - то и общий результат - false return false; // Вывожу результат -- успех return true; } }