andrey-tech/sqlitedb-php

Простая библиотека для работы с СУБД SQLite 3 для несложных проектов на PHP7+

3.0.1 2023-02-19 07:10 UTC

This package is auto-updated.

Last update: 2024-04-19 09:55:42 UTC


README

SQLiteDB logo

Latest Stable Version PHP Version Require License

Простая библиотека для работы с СУБД 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.