A PHP library to query a database.
Requires
- php: ^8.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.95
- pestphp/pest: ^5.2
Suggests
None
Provides
None
Conflicts
None
Replaces
None
This package is auto-updated.
Last update: 2026-09-29 19:33:57 UTC
README
A PHP library to query a database.
Installation
composer require michaelrushton/db
Documentation
Drivers
Connection
exec
See https://www.php.net/manual/en/pdo.exec.php.
$count = $connection->exec("DELETE FROM users");
query
See https://www.php.net/manual/en/pdo.query.php.
$pdo_stmt = $connection->query("SELECT * FROM users"); $pdo_stmt = $connection->query("SELECT * FROM users", $fetchMode, ...$fetchModeArgs);
prepare
See https://www.php.net/manual/en/pdo.prepare.php.
$pdo_stmt = $connection->prepare("SELECT * FROM users WHERE id = ?"); $pdo_stmt = $connection->prepare("SELECT * FROM users WHERE id = ?", $options);
execute
See https://www.php.net/manual/en/pdostatement.execute.php.
$pdo_stmt = $connection->execute("SELECT * FROM users WHERE id = ?", [1]);
fetch
See https://www.php.net/manual/en/pdostatement.fetch.php.
$user = $connection->fetch("SELECT * FROM users WHERE id = ?", [1]); $user = $connection->fetch("SELECT * FROM users WHERE id = ?", [1], $mode, $cursorOrientation, $cursorOffset);
fetchAll
See https://www.php.net/manual/en/pdostatement.fetchall.php.
$users = $connection->fetchAll("SELECT * FROM users WHERE status = ?", [1]); $users = $connection->fetchAll("SELECT * FROM users WHERE status = ?", [1], $mode, ...$args);
fetchColumn
See https://www.php.net/manual/en/pdostatement.fetchcolumn.php
$id = $connection->fetchColumn("SELECT * FROM users WHERE id = ?", [1]); $id = $connection->fetchColumn("SELECT * FROM users WHERE id = ?", [1], $column);
fetchObject
See https://www.php.net/manual/en/pdostatement.fetchobject.php
$user = $connection->fetchObject("SELECT * FROM users WHERE id = ?", [1]); $user = $connection->fetchObject("SELECT * FROM users WHERE id = ?", [1], $class, $constructorArgs);
yield
See https://www.php.net/manual/en/pdostatement.fetch.php.
$generator = $connection->yield("SELECT * FROM users WHERE status = ?", [1]); $generator = $connection->yield("SELECT * FROM users WHERE status = ?", [1], $mode, $cursorOrientation, $cursorOffset);
transaction
Begins a transaction, rolls back if an exception is thrown (rethrowing the exception), else commits.
use MichaelRushton\DB\Connection; $connection->transaction(function (Connection $connection) { $connection->query("INSERT INTO users (id) VALUES (1)"); $connection->query("INSERT INTO users (id) VALUES (2)"); });
Query builders
exec
$count = $connection->delete()->from('users')->exec();
query
$pdo_stmt = $connection->select()->from('users')->query(); $pdo_stmt = $connection->select()->from('users')->query($fetchMode, ...$fetchModeArgs);
prepare
$pdo_stmt = $connection->select()->from('users')->where('id = ?')->prepare(); $pdo_stmt = $connection->select()->from('users')->where('id = ?')->prepare($options);
execute
$pdo_stmt = $connection->select()->from('users')->where('id', 1)->execute();
fetch
$user = $connection->select()->from('users')->where('id', 1)->fetch(); $user = $connection->select()->from('users')->where('id', 1)->fetch($mode, $cursorOrientation, $cursorOffset);
fetchAll
$users = $connection->select()->from('users')->where('status', 1)->fetchAll(); $users = $connection->select()->from('users')->where('status', 1)->fetchAll($mode, ...$args);
fetchColumn
$id = $connection->select()->from('users')->where('id', 1)->fetchColumn(); $id = $connection->select()->from('users')->where('id', 1)->fetchColumn($column);
fetchObject
$user = $connection->select()->from('users')->where('id', 1)->fetchObject(); $user = $connection->select()->from('users')->where('id', 1)->fetchObject($class, $constructorArgs);
yield
$generator = $connection->select()->from('users')->where('status', 1)->yield(); $generator = $connection->select()->from('users')->where('status', 1)->yield($mode, $cursorOrientation, $cursorOffset);
Events
beforeConnect
Called before PDO::connect from $connection->pdo().
use MichaelRushton\DB\Events\BeforeConnectEvent; $connection->beforeConnect(function (BeforeConnectEvent $event) { });
afterConnect
Called after PDO::connect from $connection->pdo().
use MichaelRushton\DB\Events\AfterConnectEvent; $connection->afterConnect(function (AfterConnectEvent $event) { });
beforeExec
Called before $connection->exec(...).
use MichaelRushton\DB\Events\BeforeExecEvent; $connection->beforeExec(function (BeforeExecEvent $event) { });
afterExec
Called after $connection->exec(...).
use MichaelRushton\DB\Events\AfterExecEvent; $connection->afterExec(function (AfterExecEvent $event) { });
beforeQuery
Called before $connection->query(...).
use MichaelRushton\DB\Events\BeforeQueryEvent; $connection->beforeQuery(function (BeforeQueryEvent $event) { });
afterQuery
Called after $connection->query(...).
use MichaelRushton\DB\Events\AfterQueryEvent; $connection->afterQuery(function (AfterQueryEvent $event) { });
beforePrepare
Called before $connection->prepare(...).
use MichaelRushton\DB\Events\BeforePrepareEvent; $connection->beforePrepare(function (BeforePrepareEvent $event) { });
afterPrepare
Called after $connection->prepare(...).
use MichaelRushton\DB\Events\AfterPrepareEvent; $connection->afterPrepare(function (AfterPrepareEvent $event) { });
beforeExecute
Called before $connection->execute(...).
use MichaelRushton\DB\Events\BeforeExecuteEvent; $connection->beforeExecute(function (BeforeExecuteEvent $event) { });
afterExecute
Called after $connection->execute(...).
use MichaelRushton\DB\Events\AfterExecuteEvent; $connection->afterExecute(function (AfterExecuteEvent $event) { });
beforeFetch
Called before $connection->fetch(...).
use MichaelRushton\DB\Events\BeforeFetchEvent; $connection->beforeFetch(function (BeforeFetchEvent $event) { });
afterFetch
Called after $connection->fetch(...).
use MichaelRushton\DB\Events\AfterFetchEvent; $connection->afterFetch(function (AfterFetchEvent $event) { });
beforeFetchAll
Called before $connection->fetchAll(...).
use MichaelRushton\DB\Events\BeforeFetchAllEvent; $connection->beforeFetchAll(function (BeforeFetchAllEvent $event) { });
afterFetchAll
Called after $connection->fetchAll(...).
use MichaelRushton\DB\Events\AfterFetchAllEvent; $connection->afterFetchAll(function (AfterFetchAllEvent $event) { });
beforeFetchColumn
Called before $connection->fetchColumn(...).
use MichaelRushton\DB\Events\BeforeFetchColumnEvent; $connection->beforeFetchColumn(function (BeforeFetchColumnEvent $event) { });
afterFetchColumn
Called after $connection->fetchColumn(...).
use MichaelRushton\DB\Events\AfterFetchColumnEvent; $connection->afterFetchColumn(function (AfterFetchColumnEvent $event) { });
beforeFetchObject
Called before $connection->fetchObject(...).
use MichaelRushton\DB\Events\BeforeFetchObjectEvent; $connection->beforeFetchObject(function (BeforeFetchObjectEvent $event) { });
afterFetchObject
Called after $connection->fetchObject(...).
use MichaelRushton\DB\Events\AfterFetchObjectEvent; $connection->afterFetchObject(function (AfterFetchObjectEvent $event) { });
beforeBeginTransaction
Called before beginTransaction from $connection->transaction(...).
use MichaelRushton\DB\Events\BeforeBeginTransactionEvent; $connection->beforeBeginTransaction(function (BeforeBeginTransactionEvent $event) { });
afterBeginTransaction
Called after beginTransaction from $connection->transaction(...).
use MichaelRushton\DB\Events\AfterBeginTransactionEvent; $connection->afterBeginTransaction(function (AfterBeginTransactionEvent $event) { });
beforeCommit
Called before commit from $connection->transaction(...).
use MichaelRushton\DB\Events\BeforeCommitEvent; $connection->beforeCommit(function (BeforeCommitEvent $event) { });
afterCommit
Called after commit from $connection->transaction(...).
use MichaelRushton\DB\Events\AfterCommitEvent; $connection->afterCommit(function (AfterCommitEvent $event) { });
beforeRollback
Called before rollback from $connection->transaction(...).
use MichaelRushton\DB\Events\BeforeRollbackEvent; $connection->beforeRollback(function (BeforeRollbackEvent $event) { });
afterRollback
Called after rollback from $connection->transaction(...).
use MichaelRushton\DB\Events\AfterRollbackEvent; $connection->afterRollback(function (AfterRollbackEvent $event) { });
getEvents
Get all events.
$events = $connection->getEvents(); // Array // ( // [before-connect] => Array // ( // [0] => Closure Object (...) // [1] => Closure Object (...) // ) // [after-connect] => Array // ( // [0] => Closure Object (...) // ) // )
Get named events.
$events = $connection->getEvents(Event::BeforeConnect->value); // Array // ( // [0] => Closure Object (...) // [1] => Closure Object (...) // )
clearEvents
Clear all events.
$connection->clearEvents();
Clear named events.
$connection->clearEvents(Event::BeforeConnect->value);