Search by

A PHP library to query a database.

Package info

github.com/MichaelRushton/php-db

pkg:composer/michaelrushton/db

Statistics

Installs: 18

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

dev-main 2026-09-29 19:33 UTC

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);