andrey-tech / sqlitedb-php
Простая библиотека для работы с СУБД SQLite 3 для несложных проектов на PHP7+
Requires
- php: ^7.2|^8.0
- ext-pdo: *
This package is auto-updated.
Last update: 2024-10-19 10:56:54 UTC
README
Простая библиотека для работы с СУБД SQLite 3 для несложных проектов на PHP7+.
Содержание
Установка
$ composer require andrey-tech/sqlitedb-php:"^3.0"
Класс SQLiteDB
Финальный класс \AndreyTech\SQLiteDB\SQLiteDB
предназначен для работы с СУБД SQLite 3.
При возникновении ошибок в классах пространства имен \AndreyTech\SQLiteDB
выбрасывается исключение класса \AndreyTech\SQLiteDB\SQLiteDBException
.
Класс \AndreyTech\SQLiteDB\SQLiteDB
содержит следующие публичные методы:
__construct(array $config = [], array $options = []): SQLiteDB
Конструктор класса.$config
- конфигурация соединения с СУБД;$options
- опции подключения для драйвера PDO.
connect(): void
Выполняет подключение к серверу СУБД. В обычных условиях не требуется, так как подключение к серверу СУБД выполняется автоматически при первом запросе.disconnect(): void
Выполняет отключение от сервера СУБД. В обычных условиях не требуется, так как отключение от сервера СУБД выполняется автоматически при уничтожении объекта класса.getDSN(): string
Возвращает строку DSN подключения к серверу СУБД.getConfig(): array
Возвращает конфигурацию соединения с СУБД.getOptions(): array
Возвращает опции подключения для драйвера PDO.getPDO(): ?PDO
Возвращает объект класса\PDO
, если соединение с СУБД установлено.isConnected(): bool
Возвращает флаг соединения с СУБД:true
- соединение установлено,false
- не установлено.getDebugMode(): bool
Возвращает флаг состояния отладочного режима.setDebugMode(bool $debugMode): void
Включает или отключает отладочный режим работы с выводом информации вSTDOUT
.doStatement(string $statement, array $values = [], array $prepareOptions = []): \PDOStatement
Подготавливает запрос, кэширует подготовленный запрос и запускает подготовленный запрос на выполнение.
Возвращает объект класса\PDOStatement
.$statement
- SQL оператор;$values
- массив значений для SQL оператора;$prepareOptions
- опции драйвера СУБД для подготовки запроса.
beginTransaction(): void
Инициализирует транзакцию.commitTransaction(): void
Фиксирует транзакцию.rollbackTransaction(): void
Откатывает транзакцию.fetchAll(\PDOStatement $stmt): \Generator
Выбирает все записи с помощью генератора.$stmt
- объект класса\PDOStatement
.
getLastInsertId(string $idName = null): string
Возвращает значениеid
последней вставленной записи.$idName
- имя столбцаid
.
createInStatement(array $in = []): string
Создает и возвращает строку для выраженияIN (?, ?, ?,...)
.$in
- массив значений внутри выраженияIN (?, ?, ?,...)
.
Существуют следующие параметры конфигурации и опции подключения с установленными значениями по умолчанию:
$config = [ 'database' => './db.sqlite', // Имя файла СУБД SQLite 'username' => null, // Имя пользователя 'password' => null, // Пароль пользователя ]; $options = [ PDO::ATTR_TIMEOUT => 60, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, ];
Примеры
use AndreyTech\SQLiteDB\SQLiteDB; use AndreyTech\SQLiteDB\SQLiteDBException; try { // Устанавливаем имя файла СУБД SQLiteDB $config = [ 'database' => 'my_database.sqlite', ]; $db = new SQLiteDB($config); // Включаем отладочный режим с выводом информации в STDOUT $db->setDebugMode(true); // Отправляем запрос без параметров $stmt = $db->doStatement(' SELECT COUNT(*) AS count FROM contacts '); // Выбираем все записи print_r($stmt->fetchAll()); // Отправляем с использованием именованных параметров $stmt = $db->doStatement(' SELECT * FROM contacts WHERE status = :status LIMIT 10 ', [ 'status' => 1 ]); // Выбираем все записи print_r($stmt->fetchAll()); // Отправляем запрос с использованием НЕ именованных параметров $stmt = $db->doStatement(' SELECT * FROM contacts WHERE status = ? ', [ 1 ]); // Выбираем все записи с помощью генератора $generator = $db->fetchAll($stmt); foreach ($generator as $row) { print_r($row); } } catch (SQLiteDBException $exception) { printf('SQLiteDB exception (%u): %s', $exception->getCode(), $exception->getMessage()); }
Пример вывода отладочной информации в STDOUT:
***** CONNECT "sqlite:my_database.sqlite"
***** [1] SELECT COUNT(*) AS count FROM contacts
***** [2] SELECT * FROM contacts WHERE status = 1 LIMIT 10
***** [3] SELECT * FROM contacts WHERE status = 1
***** DISCONNECT "sqlite:my_database.sqlite"
Автор
© 2019-2023 andrey-tech
Лицензия
Данная библиотека распространяется на условиях лицензии MIT.