tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

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:)