Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/c9s/sqlbuilder
A powerful, fast, cross-platform SQL Builder for PHP. Convert your structured data into SQL queries with a fluent style interface and targeting on all the mainstream database (MySQL, PostgreSQL, SQLite)
https://github.com/c9s/sqlbuilder
database mysql pgsql php sql-builder sql-query
Last synced: about 1 month ago
JSON representation
A powerful, fast, cross-platform SQL Builder for PHP. Convert your structured data into SQL queries with a fluent style interface and targeting on all the mainstream database (MySQL, PostgreSQL, SQLite)
- Host: GitHub
- URL: https://github.com/c9s/sqlbuilder
- Owner: c9s
- License: other
- Created: 2012-01-30T11:44:37.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2021-11-04T04:21:58.000Z (about 3 years ago)
- Last Synced: 2024-05-21T17:32:33.363Z (6 months ago)
- Topics: database, mysql, pgsql, php, sql-builder, sql-query
- Language: PHP
- Homepage:
- Size: 2.2 MB
- Stars: 146
- Watchers: 13
- Forks: 21
- Open Issues: 26
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- License: LICENSE
Awesome Lists containing this project
README
# SQLBuilder for PHP
[![Build Status](https://travis-ci.org/c9s/SQLBuilder.svg?branch=master)](http://travis-ci.org/c9s/SQLBuilder)
[![Coverage Status](https://img.shields.io/coveralls/c9s/SQLBuilder.svg)](https://coveralls.io/r/c9s/SQLBuilder)
[![Latest Stable Version](https://poser.pugx.org/corneltek/sqlbuilder/v/stable.svg)](https://packagist.org/packages/corneltek/sqlbuilder)
[![Total Downloads](https://poser.pugx.org/corneltek/sqlbuilder/downloads.svg)](https://packagist.org/packages/corneltek/sqlbuilder)
[![Monthly Downloads](https://poser.pugx.org/corneltek/sqlbuilder/d/monthly)](https://packagist.org/packages/corneltek/sqlbuilder)
[![Latest Unstable Version](https://poser.pugx.org/corneltek/sqlbuilder/v/unstable.svg)](https://packagist.org/packages/corneltek/sqlbuilder)
[![License](https://poser.pugx.org/corneltek/sqlbuilder/license.svg)](https://packagist.org/packages/corneltek/sqlbuilder)If you're looking for something that is not an ORM but can generate SQL for
you, you just found the right one.SQLBuilder is not an ORM (Object relational mapping) system, but a toolset that helps you generate
cross-platform SQL queries in PHP.SQLBuilder is a stand-alone library, you can simply install it through composer
or just require them (the class files) with your autoloader, and it has no
dependencies.## Features
* Simple API, easy to remember.
* Fast & Powerful.
* Custom parameter marker support:
* Question-mark parameter marker.
* Named parameter marker.
* Configurable quote handler.
* Zero dependency.## Synopsis
Here is a short example of using Universal SelectQuery
```php
use SQLBuilder\ArgumentArray;
use SQLBuilder\Universal\Query\SelectQuery;
use SQLBuilder\Driver\MySQLDriver;
use SQLBuilder\Driver\PgSQLDriver;
use SQLBuilder\Driver\SQLiteDriver;$mysql = new MySQLDriver;
$args = new ArgumentArray;$query = new SelectQuery;
$query->select(array('id', 'name', 'phone', 'address','confirmed'))
->from('users', 'u')
->partitions('u1', 'u2', 'u3')
->where()
->is('confirmed', true)
->in('id', [1,2,3])
;
$query
->join('posts')
->as('p')
->on('p.user_id = u.id')
;
$query
->orderBy('rand()')
->orderBy('id', 'DESC')
;$sql = $query->toSql($mysql, $args);
var_dump($sql);
var_dump($args);
```## A More Detailed Description
Unlike other SQL utilities, SQLBuilder let you define the quote style and the
parameter marker type. there are 2 parameter marker type you can choose:1. Question mark parameter marker (`?`)
2. Named parameter. (`:id`, `:name`, `:address`, `:p1`)The above two are supported by PDO directly, and the first one is also
supported by `mysqli`, `pgsql` extension.The API is *dead simple, easy to remember*, you can just define one query, then pass
different query driver to the query object to get a different SQL string for
your targettting platform.It also supports cross-platform query generation, there are three types of
query (currently): **Universal**, **MySQL**, **PgSQL**. The **Universal** queries are
cross-platform, you can use them to create a cross-platform PHP API of
your database system, and the supported platforms are: **MySQL**, **PgSQL** and **SQLite**.Universql Queries:
- CreateDatabaseQuery
- DropDatabaseQuery
- SelectQuery
- InsertQuery
- UpdateQuery
- DeleteQuery
- UnionQuery
- CreateIndexQuery
- DropIndexQueryTo see the implementation details, you can check the source code inside **Universal** namespace:
MySQL Queries:
- CreateUserQuery
- DropUserQuery
- GrantQuery
- SetPasswordQueryFor MySQL platform, the implementation is according to the specification of MySQL 5.6.
For PostgreSQL platform, the implementation is according to the specification of PostgreSQL 9.2.
## Installation
### Install through Composer
composer require corneltek/sqlbuilder
## Getting Started
[Documentation](https://github.com/c9s/SQLBuilder/wiki)
## Development
```
composer install
```Copy the `phpunit.xml` file for your local configuration:
```sh
phpunit -c your-phpunit.xml tests
```## Contribution
To test with mysql database:
mysql -uroot -p
CREATE DATABASE sqlbuilder CHARSET utf8;
GRANT ALL PRIVILEGES ON sqlbuilder.* TO 'testing'@'localhost' identified by '';--- or use this to remove password for testing account
SET PASSWORD FOR testing@localhost=PASSWORD('');To test with pgsql database:
sudo -u postgres createdb sqlbuilder
## Reference
- http://dev.mysql.com/doc/refman/5.0/en/sql-syntax.html
- http://www.postgresql.org/docs/8.2/static/sql-syntax.html
- http://www.sqlite.org/optoverview.html## Author
Yo-An Lin (c9s)