- Aplikace
- Databáze
- Šablony
- Formuláře
- Knihovny
- Návody
Databáze – modifikátory
Pomocí modifikátorů určíte typ proměnné, díky tomu ji může framework patřičně escapovat, aby tak zabránil SQL injection. Dále „obalujte“ názvy tabulek a sloupců do hranatých závorek, aby nedošlo ke kolizi s klíčovými slovy. Sql dotaz bude také přehlednější.
$row = db::fetch('select * from [table] where [id] = %i', $id);
# select * from `table` where `id` = 5
$row = db::fetch('select * from [table] where [title] = %s', "titlek s ' apostrofem");
# select * from `table` where `title` = 'titulek s \' apostrofem'
Díky modifikátorům bude tedy vaše databáze v bezpečí. Modifikátory
uvádíme na místě, kde se proměnná má doplnit. Dané hodnoty uvádíme
jako další argumenty volané funkce (query, fetch,
fetchAll, fetchField, fetchPairs,
prepare). Pokud vám vyhovuje více, když hodnoty budete uvádět
neprodleně po jejich zápisu, můžete tak bez problému učinit.
db::fetch('select * from [table] where [id] = %i and [name] like %s', $id, $name);
# alternativně
db::fetch('select * from [table] where [id] = %i', $id, ' and [name] like %s', $name);
Přehled modifikátorů
| Modifikátor | Konstanta | Význam | Vstup | Výstup |
|---|---|---|---|---|
%r |
Db::RAW | surový zápis sql dat | ||
%c |
Db::COLUMN | jméno sloupce | ||
%s |
Db::STRING | řetězec | ||
%bin |
Db::BINARY | |||
%i |
Db::INTEGER | integer | ||
%f |
Db::FLOAT | float | ||
%b |
Db::BOOL | boolean | ||
%t |
Db::TIME | time | timestamp/výraz pro strtotime | H:i:s |
%d |
Db::DATE | date | timestamp/výraz pro strtotime | Y-m-d |
%dt |
Db::DATETIME | datetime | timestamp/výraz pro strtotime | Y-m-d H:i:s |
%set |
Db::SET | set | pole nebo řetězec | hodnoty spojené čárkou |
| Pole | ||||
%a |
Db::A_ASSOC | klic = hodnota | key1 = val1, key2 = val2 | |
%l |
DB::A_LIST | seznam hodnot | (val1, val2) | |
%v |
Db::A_VALUES | (klice) VALUES (hodnoty) | (key1, key2) VALUES (val1, val2) | |
%m |
Db::A_MULTI_VALUES | vícenásobný insert | (key, …) VALUES (val1, …), (val2, …), … | |
Mofikátory pro NULL
Může nastat situace, kdy předaný parametr může také nabývat hodnoty null. V tomto případě využijte upravené syntaxe: před modifikátor přidejte vykřičník.
$cat = null;
$posts = db::query('select * from [posts] where [category] = !%i', $cat);
# select * from `posts` where `category` = NULL
Modifikátory podmínky
Pomocí modifikátorů podmínky můžete jednoduše vytvořit svůj SQL
dotaz. Framework zatím podporuje pouze %if a
%end.
$query = db::query('select * from [table] %if', !empty($cat), ' where
[category] = %s', $cat, '%end limit 1');
