A Query Builder and Database abstraction layer
Go to file
Timothy Warren ee6f946782 Fix out-of-order where/set statements 2012-10-25 00:19:39 +00:00
classes Fix out-of-order where/set statements 2012-10-25 00:19:39 +00:00
docs Updated generated docs 2012-09-13 15:45:27 +00:00
drivers Make mysql/postgres drivers compatible with Quercus 2012-07-05 14:19:49 -04:00
tests Fix out-of-order where/set statements 2012-10-25 00:19:39 +00:00
.gitignore Remove .php_cs file 2012-09-25 15:24:51 +00:00
.travis.yml Multiple php version tests? 2012-03-23 09:34:29 -04:00
CONTRIBUTING.md Contributing file 2012-09-25 19:23:34 +00:00
README.md Remove more references, and update README 2012-10-23 13:40:11 +00:00
autoload.php Remove some references, and add autoload parameter to composer.json 2012-09-25 14:16:01 +00:00
composer.json Fix contributing file, beginning of prefixes 2012-09-25 17:16:36 +00:00
phpdoc.dist.xml Simplifiy select_ methods 2012-04-30 15:29:45 -04:00

README.md

Query

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

Build Status

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 (via interbase extension)
  • 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 insert_batch, update_batch or caching methods.

####You can also run queries manually.

To run a prepared statement, call $db->prepare_execute($sql, $params).

To run a plain query, $db->query($sql)

Retrieving Results:

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 method fetch and/or fetchAll.

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

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

Inserting / Updating

An example of an insert query:

$query = $db->set('foo', 'bar')
	->set('foobar', 'baz')
	->where('foo !=', 'bar')
	->insert('table');

An example of an update query:

$query = $db->set('foo', 'bar')
	->set('foobar', 'baz')
	->where('foo !=', 'bar')
	->update('table');

The set method can also take an array as a paramater, instead of setting individual values.