SQL builder.
-
create database object:
new PicoDatabase([host, [username, [password, [database, [encoding]]]]]); -
basic query:
query('UPDATE table SET field = 1') -
query with placeholders:
query('UPDATE table SET ?@ = ?_', 'field', '123')=UPDATE table SET `field` = '123' -
possible placeholders:
?_- parameter will be escaped as value (123\456'789-->'123\\456\'789')?@- parameter will be escaped as field name (some_field-->`some_field`)?*- parameter will be inserted as-is??- "?" will be inserted
-
to start build query:
select(),insert(),optimizeTable(), etc. -
to finish query:
execute()orfetch[Val/All/Col] -
simple chain:
select('field')->from('table')->fetchAll() -
each chain call will be translated to SQL operator. Spaces will be added before big letters.
optimizeTable('table')=OPTIMIZE TABLE table -
one or several call parameters (strings or numbers, without placeholders) will be just added to the query separated by comma:
select('field1', 'field2')=SELECT field1, field2 -
several same calls are exactly the same as one call with all parameters:
select('field1')->select('field2')=SELECT field1, field2 -
exceptions are
where,set,onandhaving. Call with several parameters will be processed as associative array with first parameter as key and second as value (see below):select('*')->from('table')->where('field1', 1)=SELECT * FROM table WHERE field1 = '1' -
non-associative array also will be processed as several parameters:
select(array('field1', 'field2'))=SELECT field1, field2 -
exceptions are
where,onandhaving. They will be added to the query separated byAND:select('*')->from('table')->where(array('field1', 'field2'))=SELECT field FROM table WHERE field1 AND field2 -
if first parameter contains placeholders ("?" symbol, except "??") then other parameters (only in that call) will be used as parameters for placeholders:
select('?@', 'field1', 'field2')=SELECT `field1`(yes, we lostfield2because we have only one placeholder) -
all elements from an array (of any type - associative or not) which is used as placeholder parameter will be processed as specified in the placeholder and added to the query separated by comma:
select('?@', array('field1', 'field2'))=SELECT `field1`, `field2` -
associative arrays are processed by keys:
- if key does not contain placeholders then it will generate
(<key> = '<escaped value>)'(=will not be added if key ends with=,>or<) - if value is an array then
INwill be used instead of=, all elements will be escaped and added to the query separated by comma and in brackets - if key contains placeholders ("?" symbol, except "??") then values (they should be in array, non-array value will be used as array with one element) will be used as parameters for placeholders:
- one array can have different types of keys
select('*')->from('table')->where(array( 'field1' => 'val1', 'field2 >' => 'val2', 'field3' => array('val3.1', 'val3.2'), 'field4 = ?* + ?_' => array('NOW()', 1) ))=
SELECT * FROM table WHERE (field1 = 'val1') AND (field2 > 'val2') AND (field3 IN ('val3.1', 'val3.2')) AND (field4 = NOW() + '1')" - if key does not contain placeholders then it will generate
-
set()is automatically added to insert/update/replace:update('table', array('field1' => 1))=UPDATE table SET field1 = '1' -
where()is automatically added to insert/update/replace:update('table', array('field1' => 1), array('field2' => 2))=UPDATE table SET field1 = '1' WHERE field2 = '2'