Простая библиотека для работы с СУБД SQLite 3 для несложных проектов на PHP7+.
$ composer require andrey-tech/sqlitedb-php:"^3.0"
Финальный класс \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.