Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

UPDATE dotaz v DIBI, vyhodnocení TRUE/FALSE

tomve
verified
rating uzivatele
(22 hodnocení)
16. 5. 2016 11:38:19
Ještě ty výhody dibi oproti pdo, thx.
16. 5. 2016 11:38:19
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196033
TomasX
verified
rating uzivatele
(4 hodnocení)
16. 5. 2016 11:39:21
tomve: snad na produkci všechny exception odchytáváš, loguješ vč. stavu aplikace, notifikuješ na email a zobrazuješ normální lidskou chybovou hlášku nebo zkoušíš operaci znovu...
16. 5. 2016 11:39:21
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196032
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
16. 5. 2016 11:40:57
TRUE/FALSE ale přece vůbec nic neřeší.
Když bude vracet true false, tak musím kontrolovat každý příkaz, zda proběhl. Proti tomu s exception můžu provést několik příkazů a zkontrolovat je najednou. Hlavně ale mám pak o problému daleko více informací. Pokud například došlo k problému kvůli unikátnímu indexu, dostanu hezky exception DibiUniqueConstraintViolationException a můžu to zpracovat jinak, než když to bude chyba syntaxe.
Hlavně se ale nikdy nestane, že by se chyba zamlčela. Pokud totiž neudělám try/catch a k chybě dojde, tak se běh skriptu zastaví a problém se zaloguje. V případě transakce se pak neuloží nic. To mi přijde daleko praktičtější, než když se bude měsíce chyba ignorovat a do databáze se budou ukládat nekonzistentní data.
16. 5. 2016 11:40:57
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196031
tomve
verified
rating uzivatele
(22 hodnocení)
16. 5. 2016 11:41:55
Napsal TomášX;1292139
počet změněných řádků vrací samotná MySQL (stejně se chovají i jiné relační databáze), s tím dibi nic neudělá. To je takový problém tam dát result > 0, abych zkontrolovat, že se něco změnilo? Čeho chceš docílit? Proč ti to vadí?
Také můžeš ručně zkontrolovat co se ve formuláři změnilo. Buď si data pro formulář vytáhneš z DB, ručně projdeš a zjistíš, jestli má smysl dávat update (takhle se chová velká řada systémů) nebo naprasáka uděláš hash údajů, které vypisuješ a poté uděláš stejný hash, když jsi data dostal, opět zjistíš, jestli musíš dávat update.
To jsem kdysi někde četl, takže to hodí takový true/false, ale stejně by něco mělo dibi hodit, jako pdo s execute...
16. 5. 2016 11:41:55
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196030
MatesM
verified
rating uzivatele
16. 5. 2016 11:46:22
No jak jsem pochopil otázku já na začátku tak ani to přepsání na PDO by nepomohlo. I to totiž vrátí pouze TRUE/FALSE na základě toho jestli se povedlo spustit SQL dotaz nad databází, ale už nebude řešit jestli se něco změnilo nebo ne. Ale možná mi to někdo vyvrátí.
16. 5. 2016 11:46:22
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196029
tomve
verified
rating uzivatele
(22 hodnocení)
16. 5. 2016 12:05:23
Napsal Souki;1292145
TRUE/FALSE ale přece vůbec nic neřeší.
Když bude vracet true false, tak musím kontrolovat každý příkaz, zda proběhl. Proti tomu s exception můžu provést několik příkazů a zkontrolovat je najednou. Hlavně ale mám pak o problému daleko více informací. Pokud například došlo k problému kvůli unikátnímu indexu, dostanu hezky exception DibiUniqueConstraintViolationException a můžu to zpracovat jinak, než když to bude chyba syntaxe.
Hlavně se ale nikdy nestane, že by se chyba zamlčela. Pokud totiž neudělám try/catch a k chybě dojde, tak se běh skriptu zastaví a problém se zaloguje. V případě transakce se pak neuloží nic. To mi přijde daleko praktičtější, než když se bude měsíce chyba ignorovat a do databáze se budou ukládat nekonzistentní data.
Dobře, dobře. (btw Ale pokud máš problém s unikátním indexem, tak si to blbě postavil.)
---------- Post added 16.05.2016 at 12:06 ----------
Napsal MatesM;1292150
No jak jsem pochopil otázku já na začátku tak ani to přepsání na PDO by nepomohlo. I to totiž vrátí pouze TRUE/FALSE na základě toho jestli se povedlo spustit SQL dotaz nad databází, ale už nebude řešit jestli se něco změnilo nebo ne. Ale možná mi to někdo vyvrátí.
Pochopil jsem, že chce jen, zdá to proběhlo nebo ne.
16. 5. 2016 12:05:23
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196028
TomasX
verified
rating uzivatele
(4 hodnocení)
16. 5. 2016 12:46:04
v tom případě už to má vyřešené, kdyby dotaz selhal, vyhodí se exception a další kód se nevykonává, jen to chce tu excpetion odchytávat...
tomve: unikátní index může být třeba na přihlašovacím jménu a mám dvě možnosti, buď si nejprve v transakci zkontroluji, jestli už existuje a pak ho tam vložím (trvá to zbytečně dlouho a lockuji tím databázi) nebo ho tam zkusím vložit a odchytávám chybu s unique indexem...
16. 5. 2016 12:46:04
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196027
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
16. 5. 2016 12:56:27
Napsal Tomve;1292155
Ale pokud máš problém s unikátním indexem, tak si to blbě postavil.
Není to tak jednoduché. Samozřejmě si můžu zkontrolovat, jestli hodnota existuje než zapíšu. Jenže pokud mám velkou aplikaci, kde jsou desetitisíce zápisů za vteřinu, tak mezi kontrolou a zápisem mi ten záznam může někdo další obsadit. Podle toho se pak navrhuje struktura, aby se tomu částečně předcházelo.
Typický příklad ale ještě kód objednávky, který musí být podle nějakého formátu a v posloupnosti. Přijde špička návštěvnosti a než se transakce dokončí, tak bude kód obsazený. V tom případě je zrovna praktické mít možnost takovou situaci odchytit a třeba získat nový kód a akci automaticky opakovat.
Hlavně jsem tím ale chtěl říct, že třeba chybu syntaxe nemá smysl odchytávat. To má skončit errorem a někam se zalogovat. Na (třeba) unikátní index ale má smysl buď nějak reagovat nebo to lidsky oznámit uživateli.
16. 5. 2016 12:56:27
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196026
tomve
verified
rating uzivatele
(22 hodnocení)
16. 5. 2016 13:27:45
Souki: aby nebyl den blbec a nezacyklil ses na nemožnosti získat nový kód.
16. 5. 2016 13:27:45
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196025
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
16. 5. 2016 14:07:57
Napsal Tomve;1292179
Souki: aby nebyl den blbec a nezacyklil ses na nemožnosti získat nový kód.
Zjednodušuju :)
16. 5. 2016 14:07:57
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/strana/2/#reply1196024
Pro odpověď se přihlašte.
Přihlásit