Autor Zpráva
qteck
Profil
Ahoj, napsal jsem si script co mi přidá článek a poté z něj vytáhne tagy a uloží je v závislosti na posledním vloženém id. Hodil jsem to do transakce a chtěl bych vědět jak mohu ověřit chování když transakce nebude úspěšná. Ten kód vypadá takhle:

try 
        {
        
            $db->beginTransaction();
        
            $addArticle->insertArticle(array(':title' => $title,
                                             ':content' => $content,
                                             ':author' => $author,
                                             ':place' => $place));
        
            $title = $title;
            $author = $_SESSION['fb']['name'];
    
            $tagsFromContent = $addArticle->hashTagSelect($content);
            $addArticle->hashTagInsert(array_merge($tagsFromContent, makeItHashTag(array($title, $author))));
            
            $db->commitTransaction();
            
            $notices[] = 'Article has been posted';
            $_SESSION['addArticleContent'] = '';
  
            
        // build up $article->fillTheCommentsFieldsBySession(); for this ocassion
 
        } 
          catch (Exception $ex) 
        {
            $db->rollbackTransaction();
            $notices[] = 'Article has not been posted! Some issues have been appeared.';
        }


Pokud k němu má někdo nějaké poznámky rád se přiučim.

Díky.


A ještě jedna otázka, pokud tedy první pokus try dopadne negativně a zachytí se nějaká výjimka vykonají se tyto dva řádky nebo ne?

  $notices[] = 'Article has been posted';
            $_SESSION['addArticleContent'] = '';
Kajman
Profil
qteck:
jak mohu ověřit chování když transakce nebude úspěšná

Např. můžete databázovému uživateli odebrat právo insert na tabulku s tagy.
qteck
Profil
mrkl jsem na to:
http://programujte.com/clanek/2008090900-uvod-do-systemu-uzivatelskych-prav-mysql/

ale jakým způsobem to potom ověřím netuším.
Kajman
Profil
qteck:
jakým způsobem to potom ověřím netuším

Pokud uděláte rollback, neměl by být v db ani vkládaný článek.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0