DB Query Builder and Abstraction layer

Name Last Update
build Loading commit data...
docs Loading commit data...
src Loading commit data...
tests Loading commit data...
.gitignore Loading commit data...
.gitlab-ci.yml Loading commit data...
.scrutinizer.yml Loading commit data...
.travis.yml Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE.md Loading commit data...
README.md Loading commit data...
autoload.php Loading commit data...
build.xml Loading commit data...
composer.json Loading commit data...
phpdoc.dist.xml Loading commit data...
sonar-project.properties Loading commit data...


A query builder/database abstraction layer, using prepared statements for security.

Build Status Code Coverage Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License


  • PDO extensions for the databases you wish to use (unless it's Firebird, in which case, the interbase extension is required)
  • Supported version of PHP (Older versions may work, but are not supported)

Databases Supported

  • Firebird (via interbase extension)
  • MySQL
  • PostgreSQL
  • SQLite

Including Query in your application

  • Install via composer and include vendor/autoload.php or
  • Just include the autoload.php file. This will automatically load the classes that are supported by the current PHP installation.


Create a connection array or object similar to this:


$params = array(
    'type' => 'mysql', // mysql, pgsql, firebird, sqlite
    'host' => 'localhost', // address or socket
    'user' => 'root',
    'pass' => '',
    'port' => '3306',
    'database' => 'test_db',

    // Only required for
    // SQLite or Firebird
    'file' => '/path/to/db/file',

    // Optional paramaters
    'prefix' => 'tbl_',     // Database table prefix
    'alias' => 'old'        // Connection name for the Query function

$db = Query($params);

The parameters required depend on the database.

Query function

You can use the Query() function as a reference to the last connected database. E.g.


// or
$result = Query()->query($sql);

If the alias key is set in the parameters, you can refer to a specific database connection


// Set the alias in the connection parameters
$params['alias'] = 'old';

// Connect to the legacy database

Running Queries

Query uses the same interface as CodeIgniter's Query Builder class. However, it does not implement the update_batch or caching methods. For specific query builder methods, see the class documentation.

You can also run queries manually.

To run a prepared statement, call $db->prepare_execute($sql, $params).

To run a plain query, $db->query($sql)

Retrieving Results:

An example of a moderately complex query:

$query = $db->select('id, key as k, val')
    ->from('table t')
    ->where('k >', 3)
    ->or_where('id !=' 5)
    ->order_by('val', 'DESC')
    ->limit(3, 1)

This will generate a query similar to (with this being the output for a PostgreSQL database):

SELECT "id", "key" AS "k", "val"
FROM "table" "t"
WHERE "k" > ?
OR "id" != ?

To retrieve the results of a query, use the PDO method fetch and/or fetchAll.

$query = $db->get('table_name');

$results = $query->fetchAll(PDO::FETCH_ASSOC);

Inserting / Updating

An example of an insert query:

$query = $db->set('foo', 'bar')
    ->set('foobar', 'baz')
    ->where('foo !=', 'bar')

An example of an update query:

$query = $db->set('foo', 'bar')
    ->set('foobar', 'baz')
    ->where('foo !=', 'bar')

The set method can also take an array as a parameter, instead of setting individual values.