SQLComposer

Created: 2011-07-07 22:54
Updated: 2015-05-04 05:35
php

README.md

SQLComposer

An object-oriented way to build SQL statements in PHP.

Getting Started

Create a query object with any of:

SQLComposer::select();
SQLComposer::update();
SQLComposer::insert();
SQLComposer::replace();
SQLComposer::delete();

Then build your query:

$sqlc = SQLComposer::select(array("u.id", "u.name", "c.color fav_color"))
	->from("users u")
	->join("JOIN colors c ON c.user_id=u.id")
	->where("u.city=?, array($city))
	->where("u.age between ? and ?", array($min_age, $max_age))
	->order_by("u.name")
	->limit(25);

And pass the renderings to your favorite flavor of database:

$db->Execute(
	$sqlc->getQuery(),
	$sqlc->getParams()
);

Which would result in:

$db->Execute("
	SELECT u.id, u.name, c.color fav_color
	FROM users u
		JOIN colors c ON c.user_id=u.id
	WHERE (u.city=?) AND (u.age between ? and ?)
	ORDER BY u.name
	LIMIT 25",

	array($city, $min_age, $max_age)
);

Dynamic Queries

SQLComposer is better used when the SQL query needs to be build dynamically since the clause definition order does not matter:

$sqlc = SQLComposer::update('users u')->limit(1);

if ($_POST['name']) {
	$sqlc->set("u.name=?", $_POST['name']);
}

if ($_POST['color']) {
	$sqlc
		->join("JOIN colors c ON c.user_id=u.id")
		->set("c.color=?", $_POST['color']);
}

$sqlc->where("u.id=?", $_POST['user_id']);

$db->Execute( $sqlc->getQuery(), $sqlc->getParams() );

MySQLi

SQLComposer also supports MySQLi parameter types by including them as the last argument to methods that accept parameters:

$sqlc = SQLComposer::select('*')
	->from('users')
	->where("age between ? and ?", array($min, $max), "ii")
	->where("city = ?", array($city), "s");

Which will result in the parameter array:

array("iis", $min, $max, $city);
Cookies help us deliver our services. By using our services, you agree to our use of cookies Learn more