A Query Builder and Database abstraction layer
Go to file
Timothy Warren 6e1f28724e Move development from fork to main repo on develop branch, test more PHP versions 2016-07-19 16:57:44 -04:00
build Use special config for docker tests 2016-07-19 11:17:55 -04:00
docs Update docs 2015-11-10 16:40:14 -05:00
src Remove the last of the one line if statements 2015-11-11 15:44:24 -05:00
tests Actually fix failing test, remove some older test skips 2016-07-19 15:19:48 -04:00
.gitignore Actually fix tests 2015-11-10 11:18:11 -05:00
.gitlab-ci.yml Move development from fork to main repo on develop branch, test more PHP versions 2016-07-19 16:57:44 -04:00
.scrutinizer.yml Moved protected query builder methods to abstract class 2014-03-27 15:46:28 -04:00
.travis.yml Move development from fork to main repo on develop branch, test more PHP versions 2016-07-19 16:57:44 -04:00
CONTRIBUTING.md Move development from fork to main repo on develop branch, test more PHP versions 2016-07-19 16:57:44 -04:00
LICENSE.md Move development from fork to main repo on develop branch, test more PHP versions 2016-07-19 16:57:44 -04:00
README.md update README 2016-02-01 20:59:21 -05:00
autoload.php Change test setup to be more extensible 2015-11-10 16:29:17 -05:00
build.xml Update build.xml for phing 2016-05-03 13:18:12 -04:00
composer.json Update docs, composer and README 2014-03-31 16:01:58 -04:00
phpdoc.dist.xml Move library into src folder, fix simpletest test runner 2015-07-29 16:51:17 -04:00
sonar-project.properties Move development from fork to main repo on develop branch, test more PHP versions 2016-07-19 16:57:44 -04:00

README.md

Query

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

Build Status Code Coverage Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License

Requirements

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

Databases Supported

  • Firebird (via interbase extension)
  • Firebird (via PDO) -- experimental
  • MySQL
  • PostgreSQL
  • SQLite

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',

	// Optional paramaters
	'prefix' => 'tbl_', 	// Database table prefix
	'alias' => 'old' 		// Connection name for the Query function
);

$db = Query($params);

The parameters required depend on the database.

Query function

You can use the Query() function as a reference to the last connected database. E.g.

<?php
Query()->get('table_name');

// or
$result = Query()->query($sql);

If the alias key is set in the parameters, you can refer to a specific database connection

<?php

// Set the alias in the connection parameters
$params['alias'] = 'old';

// Connect to the legacy database
Query('old')->query($sql);

Running Queries

Query uses the same interface as CodeIgniter's Active Record class. However, it does not implement the 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:

<?php
$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.

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

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

Inserting / Updating

An example of an insert query:

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

An example of an update query:

<?php
$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.