|
před 1 rokem | |
---|---|---|
apiDocumentation | před 1 rokem | |
build | před 1 rokem | |
src | před 1 rokem | |
tests | před 1 rokem | |
.editorconfig | před 1 rokem | |
.gitignore | před 1 rokem | |
.gitlab-ci.yml | před 1 rokem | |
.scrutinizer.yml | před 5 roky | |
.travis.yml | před 1 rokem | |
CONTRIBUTING.md | před 3 roky | |
LICENSE.md | před 3 roky | |
README.md | před 1 rokem | |
RoboFile.php | před 1 rokem | |
composer.json | před 1 rokem | |
phpdox.xml | před 1 rokem | |
phpstan.neon | před 1 rokem | |
sonar-project.properties | před 3 roky |
A query builder/database abstraction layer, using prepared statements for security.
vendor/autoload.php
Create a connection array or object similar to this:
<?php
$params = array(
'type' => 'mysql', // mysql, pgsql, firebird, sqlite
'host' => 'localhost', // address or socket
'user' => 'root',
'pass' => '',
'port' => '3306',
'database' => 'test_db',
// Only required for
// SQLite
'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.
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);
Query uses the same interface as CodeIgniter’s Query Builder class. However, it does not implement the update_batch
or caching methods. For specific query builder methods, see the class documentation.
Underscored methods are also aliased to camel case methods.
To run a prepared statement, call
$db->prepareExecute($sql, $params)
.
To run a plain query, $db->query($sql)
An example of a moderately complex query:
<?php
$query = $db->select('id, key as k, val')
->from('table t')
->where('k >', 3)
->orWhere('id !=' 5)
->orderBy('val', 'DESC')
->limit(3, 1)
->get();
This will generate a query similar to (with this being the output for a PostgreSQL database):
SELECT "id", "key" AS "k", "val"
FROM "table" "t"
WHERE "k" > ?
OR "id" != ?
ORDER BY "val" DESC
LIMIT 3 OFFSET 1
To retrieve 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);
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 parameter, instead of setting individual values.