nicodinus / amphp2-sqlite
Async SQLite client based on legacy version of amphp/amp framework (^2.6)
dev-master
2022-08-26 15:54 UTC
Requires
- php: >=7.4
- ext-sqlite3: *
- amphp/amp: ^2.6
- amphp/parallel: ^1.4
- amphp/sql: ^1.0
- amphp/sync: ^1.4
Requires (Dev)
- amphp/phpunit-util: ^2
- nicodinus/php-cs-fixer-config: dev-master
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.26
This package is auto-updated.
Last update: 2025-02-26 21:31:40 UTC
README
nicodinus/amphp2-sqlite
is a non-blocking sqlite client for amphp:^2.6 using parallel
Installation
composer require nicodinus/amphp2-sqlite
Usage
<?php declare(strict_types=1); use Amp\Loop; use Vajexal\AmpSQLite\SQLiteCommandResult; use Vajexal\AmpSQLite\SQLiteConnection; use Vajexal\AmpSQLite\SQLiteResultSet; use Vajexal\AmpSQLite\SQLiteStatement; use function Vajexal\AmpSQLite\connect; require_once 'vendor/autoload.php'; Loop::run(function () { /** @var SQLiteConnection $connection */ $connection = yield connect('database.sqlite'); yield $connection->execute('drop table if exists users'); yield $connection->execute('create table users (id integer primary key, name text not null)'); yield $connection->execute('insert into users (name) values (:name)', [ ':name' => 'Bob', ]); /** @var SQLiteResultSet $results */ $results = yield $connection->query('select * from users'); while (yield $results->advance()) { $row = $results->getCurrent(); echo "Hello {$row['name']}\n"; } /** @var SQLiteStatement $statement */ $statement = yield $connection->prepare('update users set name = :name where id = 1'); /** @var SQLiteCommandResult $result */ $result = yield $statement->execute([ ':name' => 'John', ]); echo "Updated {$result->getAffectedRowCount()} rows\n"; });
Transactions
<?php declare(strict_types=1); use Amp\Loop; use Vajexal\AmpSQLite\SQLiteConnection; use Vajexal\AmpSQLite\SQLiteTransaction; use function Vajexal\AmpSQLite\connect; require_once 'vendor/autoload.php'; Loop::run(function () { /** @var SQLiteConnection $connection */ $connection = yield connect('database.sqlite'); yield $connection->execute('drop table if exists users'); yield $connection->execute('create table users (id integer primary key, name text not null)'); /** @var SQLiteTransaction $transaction */ $transaction = yield $connection->beginTransaction(); yield $transaction->execute('insert into users (name) values (:name)', [ ':name' => 'Bob', ]); yield $transaction->createSavepoint('change_name'); yield $transaction->execute('update users set name = :name where id = 1', [ ':name' => 'John', ]); yield $transaction->releaseSavepoint('change_name'); yield $transaction->commit(); });