andrey-tech/sqlitedb-php

适用于PHP7+的简单SQLite 3数据库操作库,用于简单项目。

3.0.1 2023-02-19 07:10 UTC

This package is auto-updated.

Last update: 2024-09-19 10:48:20 UTC


README

SQLiteDB logo

Latest Stable Version PHP Version Require License

适用于PHP7+的简单SQLite 3数据库操作库,用于简单项目。

内容

安装

$ 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 许可证下发行。