- Aplikace
- Databáze
- Šablony
- Formuláře
- Knihovny
- Návody
Databáze – výběr dat
Metody
Třída db je v podstatě pouze statický wrapper pro aktivní
spojení DbConnection. Na spojení voláme metodu query, která
nám vrátí objekt DbResult, se kterým můžeme efektně
pracovat. Uveďme si metody, které můžeme volat na DbResult:
fetch()– vrátí řádek dotazufetchAll()– vrátí pole všech řádků dotazufetchField()– vrátí první buňku dotazufetchPairs()– vrátí spárované první dva sloupce dotazu
Pokud výsledek obsahuje data z více tabulek, budou objekt automaticky ve více-tabulkovém módu.
Základní příklady použití:
$result = db::query('select * from table');
# získaní dat z celé tabulky
$rows = $result->fetchAll();
# získání pouze jednoho řádku
$row = $result->fetch();
# získání prvního pole
$field = $result->fetchField();
Celý zápis lze zkrátit pomocí wrapperů:
$rows = db::fetchAll('select * from table');
$row = db::fetch('select * from table');
$field = db::fetchField('select * from table');
$pairs = db::fetchPairs('select id, name from table');
# array(id => name);
Přístup k datům
Metody vracejí objekt DbResultNode, respektive pole těchto
záznamů. Tento objekt představuje jeden databázový řádek. Díky array
accessu je možné přistupovat k tomuto objektu klasicky jako k poli, stejně
tak ale můžete využít běžné členské proměnné.
$data = db::fetch('select * from table_test limit 1');
echo $data->id;
echo $data->name;
# alternativně
echo $data['id'];
echo $data['name'];
Víceřádkový výsledek
Pokud chceme získat všechny řádky výsledku, používáme metodu
fetchAll(), který vrací pole DbResultNode. Můžeme
jednotlivé řádky jednoduše projít a vypsat jejich obsah.
$data = db::fetchAll('select * from table_test');
foreach ($data as $row) {
echo $row->id;
echo $row->name;
echo "<hr />";
}
Pokud máme k dispozici objekt dotazu – ne přímo jeho data (pomocí
Db::query()), pak můžeme jednoduše nechat rovnou iterovat tento
objekt.
$query = db::query('select * from table_test');
foreach ($query as $row) {
...
