Stash Queries - PHP SQL library providing an easy, eloquent, and fluent yet expressive way to select, create, update, and delete SQL records.

Maintainers

Package info

github.com/SkyfirePHP/DB

Issues

pkg:composer/skyfirephp/db

Statistics

Installs: 9

Dependents: 0

Suggesters: 0

Stars: 2

dev-master 2026-02-20 15:54 UTC

This package is not auto-updated.

Last update: 2026-03-29 03:32:39 UTC


README

Stash Queries is an eloquent and expressive PHP library that simplifies database interactions.

It acts as a lightweight wrapper around PHP's native PDO (PHP Data Objects) extension, providing a fluent API to easily execute SELECT, INSERT, UPDATE, and DELETE operations using your actual SQL files. Originally developed as the DB service for the Skyfire PHP framework, this library is specifically designed as a native PDO replacement rather than a full Object-Relational Mapper (ORM).

Note: Currently, Stash Queries supports MySQL and PostgreSQL databases. Support for additional database are up for request.

Requirements

  • PHP 5.6 or higher
  • PDO_MYSQL PHP extension

(Note: PHP 5.6 is the minimum required version for security and modern language features.)

Code Examples

// setting the DB display encoding type (if needed)
FixCollation::charset('utf-8', FixCollation::TEXT_HTML);

// setting Database credentials
DB::define('stash_dir',   getcwd()); // or dirname(__FILE__)
DB::define('host',       'localhost');
DB::define('dbname',     'test_db1');
DB::define('dbuser',     'root');
DB::define('dbpassword', '');


// SQL select query (with prepare variables)
$prepare = array
(
    'label' => 'test'
);
$data = DB::select('get.HomeTextByLabel')->prepare($prepare);
var_dump($data);


// SQL simple select query
$data = DB::select('get.AllHomeTextData')->execute();
var_dump($data);


// raw SQL query (with prepare variables)
$data = DB::query('SELECT * FROM test WHERE data IS NOT NULL AND id > :count AND data != :text', array
(
    ':id'   => 10,
    ':text' => 'test'
))->execute();
var_dump($data);


// displays the prepare update statement in plain text (ideal for debugging queries)
$query = DB::update('PostfromTestById')->text($prepare);
echo $query;

Injections

You can securely inject dynamic variables directly into your queries (e.g., table names or column fields) when standard PDO bindings cannot be used:

$data = DB::select('get.fieldData.byId')->inject(array
(
    'field' => $data->field,
    'table' => $table_name
))->prepare(array('id' => (int) $record->id));

Persistent Connections

To enable persistent database connections for all queries, define the persistent configuration setting as follows:

DB::define('persistent', TRUE);
// DB::define('persistent', 'yes');

You can use either the boolean TRUE or the string 'yes' to enable this feature.

Creating Query Folders

If you are unsure whether your SQL query folders exist, you can call the following function to create them automatically. It returns FALSE if no directories were created, or an integer representing the number of directories created (e.g., 4).

DB::createQueryDirectories();

Note: Ensure you place this function call after all DB::define() configurations.

Quickly Create a Database

You can conveniently create a new database if it doesn't already exist:

DB::createNotExist('database_name');

Note: Ensure you place this function call after all DB::define() configurations.

Installation

Manual Installation: To include the library manually, simply require the StashQueries.php file in your project:

require_once 'DB/StashQueries.php';

Via Composer: Alternatively, you can install the library via Composer by adding skyfirephp/db to the require section of your composer.json file:

{
    "require": {
        "skyfirephp/db": "dev-master"
    }
}

License

Stash Queries is open-sourced software licensed under the MIT License.

Copyright 2015-2017 Travis van der Font