Completely standalone, expressive SQL query creator. No database or ORM needed.
- No database connection required, entirely standalone
- Return SQL string and params in order for PDO queries
- Support for MySQL and ANSI SQL variations
- Complex queries (nested where, having etc)
- Simple, expressive syntax
- Can return query parts at any point
Installation is via composer, in the usual manner:
{
"require": {
"solution10/sql": "~1.0"
}
}
For more detailed documentation, please check the /docs folder in the repo, or the Wiki.
$query = (new Solution10\SQL\Select())
->select(['users.name', 'locations.name'])
->from('users')
->join('locations', 'users.location_id', '=', 'locations.id')
->where('users.id', '>', 15)
->limit(25)
->offset(10)
->orderBy('name', 'DESC');
// Make use of an existing PDO object to actually run the query:
$stmt = $pdo->prepare((string)$query);
$stmt->execute($query->params());
$rows = $stmt->fetchAll();
$query = (new Solution10\SQL\Insert())
->table('users')
->values([
'name' => 'Alex',
'location_id' => 27
]);
// Use with PDO in exactly the same way as SELECT:
$stmt = $pdo->prepare((string)$query);
$stmt->execute($query->params());
$query = (new Solution10\SQL\Update())
->table('users')
->where('id', '=', 15)
->values([
'name' => 'Alex',
'location_id' => 27
]);
// Use with PDO in exactly the same way as SELECT:
$stmt = $pdo->prepare((string)$query);
$stmt->execute($query->params());
$query = (new Solution10\SQL\Delete())
->table('users')
->where('id', '=', 27)
->limit(1);
// Use with PDO in exactly the same way as SELECT:
$stmt = $pdo->prepare((string)$query);
$stmt->execute($query->params());
By default, S10\SQL will assume that you're using an ANSI SQL compatible database. If you're using something else, MySQL for instance, simply pass into the constructor the Dialect instance:
$query = (new Solution10\SQL\Select(new Solution10\SQL\Dialect\MySQL()))
->select('*')
->from('users')
->limit(10);
You can also write your own dialects by implementing Solution10\SQL\DialectInterface
.
(or the /docs folder in the repo)
From a checkout of this project, run:
$ make
This will create an api/ folder for you to peruse.
- PHP >= 5.4