A Query Builder and Database abstraction layer
Go to file
2012-03-19 15:12:50 -04:00
drivers Made db tests less redundant 2012-03-19 13:38:49 -04:00
tests Don't run tests on databases that don't exist 2012-03-19 14:36:57 -04:00
.gitignore Autoloader, and beginning of simplified testing 2012-03-19 13:24:36 -04:00
autoload.php Autoloader, and beginning of simplified testing 2012-03-19 13:24:36 -04:00
db_pdo.php Overhaul firebird driver to better match PDO interface. 2012-03-15 14:09:45 -04:00
query_builder.php Removed query statement output 2012-03-19 13:58:14 -04:00
README.md Readme improvements 2012-03-19 15:12:50 -04:00

Query

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

Requirements

  • Pdo extensions for the databases you wish to use (unless it's Firebird, in which case, the interbase extension is required)
  • PHP 5.2+

Databases Supported

  • Firebird
  • MySQL
  • PostgreSQL
  • SQLite
  • Others, via ODBC

Including Query in your application

To include Query in your PHP project, just include the autoload.php file. This will automatically load the classes that are supported by the current PHP installation.

Connecting

Create a connection array or object similar to this:

<?php

$params = array(
	'type' => 'mysql',
	'host' => 'localhost',
	'user' => 'root',
	'pass' => '',
	'port' => '3306',
	'database' => 'test_db',
	
	// Only required
	// SQLite or Firebird
	'file' => '/path/to/db/file',
);

$db = new Query_Builder($params);

The parameters required depend on the database.

Running Queries

Query uses the same interface as CodeIgniter's Active Record class. However, it does not implement the select_ methods, count_all_results, distinct, having, or_having, get_compiled_query, insert_batch, update_batch, or count_all methods.

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)
	->get();

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

SELECT "id", "key" AS "k", "val"
FROM "table" "t"
WHERE "k" > ?
OR "id" != ?
ORDER BY "val" DESC
LIMIT 3 OFFSET 1

To retreive the results of a query, use the PDO methods fetch and fetchAll.

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

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