2012-03-15 09:25:18 -04:00
# Query
2012-03-19 08:57:55 -04:00
A query builder/abstraction layer, using prepared queries for security.
2012-03-15 12:02:26 -04:00
2012-03-22 15:07:27 -04:00
[![Build Status ](https://secure.travis-ci.org/timw4mail/Query.png )](http://travis-ci.org/timw4mail/Query)
2012-03-15 12:02:26 -04:00
## Requirements
2012-03-15 12:09:43 -04:00
* 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
2012-03-15 12:02:26 -04:00
2012-07-20 16:40:58 -04:00
* Firebird (via interbase extension)
2012-03-15 12:09:43 -04:00
* MySQL
* PostgreSQL
* SQLite
* Others, via ODBC
2012-03-19 13:24:36 -04:00
## 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.
2012-03-15 12:02:26 -04:00
## 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
2012-04-17 14:22:51 -04:00
Query uses the same interface as CodeIgniter's [Active Record class ](http://codeigniter.com/user_guide/database/active_record.html ). However, it does not implement the `insert_batch` or `update_batch` methods.
2012-03-15 12:02:26 -04:00
2012-04-25 10:43:39 -04:00
####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:
2012-03-19 17:07:54 -04:00
2012-03-19 15:12:50 -04:00
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
2012-03-19 23:47:07 -04:00
To retreive the results of a query, use the PDO method [fetch ](http://php.net/manual/en/pdostatement.fetch.php ) and/or [fetchAll ](http://php.net/manual/en/pdostatement.fetchall.php ).
2012-03-15 12:02:26 -04:00
2012-03-15 12:09:43 -04:00
$query = $db->get('table_name');
2012-03-15 12:02:26 -04:00
$results = $query->fetchAll(PDO::FETCH_ASSOC);