Oznámení
jak zjistit výsledek operace?
před 10 lety
- OK3
- Člen | 94
Možná trochu hloupý dotaz, ale potřeboval bych vědět, jak zjistím výsledek volání nějakého dotazu např:
$set = array('name'=>'Pepa', 'surname'=>'Novák');
$res = dibi::insert('users', $set);
nebo
$res = dibi::delete('users')->where('name = %s', 'Pepa');
Existuje nějaká metoda indikující „úspěch volání“, která mi vrátí true/false (nebo obdoba affected_rows) nebo se to s dibi dělá prostě jinak? Například, že to volání uzavřu do catch/try?
Dokumentaci jsem zběžně proběhl a na fóru jsem taky zkoušel hledat.. Přem děkuju za nějaký hint :-)
Editoval OK3 (14. 11. 2009 14:19)
před 10 lety
- vlki
- Člen | 218
Všechny dotazy, které nevrací nějaký výsledek, tak vrací počet ovlivněných řádků (affected_rows). Pokud tedy zavoláš
$set = array('name' => 'Pepa');
$res = dibi::insert('users', $set)->execute(); // tady je nutné ještě explicitně provést dotaz
tak budeš mít v $res
počet ovlivněných řádků. Prostuduj
si přímo kód, tomu můžeš věřit nejvíc – https://github.com/…nnection.php#L320
Pokud jde o validitu dotazu, tak tu řeší catch/try. Pokud dojde z db nějaká chyba, zabalí se do DibiException (nebo DibiDriverException) a lze ji odchytit.
Takže jsi měl v základě pravdu sám:)