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

David Musil
verified
rating uzivatele
(68 hodnocení)
15. 5. 2016 23:24:19
Ahoj,
rad bych vedel, jak vyhodnotit provedeni dotazu na databazi pomoci Dibi knihovny. Udelam update udaju, dostanu zpatky 1. Jenze, pak refreshnu stranku, dostanu ale 0.
$sql = dibi::query("UPDATE $table SET", $update, "WHERE %and", $where);
if ($sql) {
}
else {
}
Uz jsem vygooglil, ze prikaz update vraci pocet ovlivnenych radku, nikoli jestli se dotaz provedl spravne. Samozrejme, je spousta situaci, kdy se poslou ta sama data, jako uz konkretni zaznam obsahuje. Me ale nezajima, ze se data neprepsala, protoze obecne vzato dotaz probehl spravne a nebyla v nem zadna chyba.
Jak tohle resite? Jak spravne postavit dotaz ci jeho zpusob vyhodnoceni, abych z nej dostal TRUE/1 nebo nejakou jinou hodnotu, diky ktere bych mohl vyhodnotit, ze UPDATE dotaz probehl spravne, i kdyz se treba zadne nove udaje neobjevily a jsou shodne s temi puvodnimi.
Reseni, jak to ocurat je jasne. Udelat tam jeste sloupecek s casovym udajem editace a tam vzdy vkladat aktualni cas. Ale to bych nerad :)
Verim, ze dotaz je jasny.
Diky vsem.
15. 5. 2016 23:24:19
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196048
Adam
verified
rating uzivatele
(6 hodnocení)
16. 5. 2016 00:40:44
A co udelat transakci ? :) ta kdyz probehne dobre tak se potvrdi a pokud selze tak se dela rollback
16. 5. 2016 00:40:44
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196047
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
16. 5. 2016 01:50:24
Co znamená, že dotaz proběhl správně?
16. 5. 2016 01:50:24
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196046
TomasX
verified
rating uzivatele
(4 hodnocení)
16. 5. 2016 03:33:31
z dokumentace dibi:
Jakákoliv chyba vzniklá během operace s databázovým serverem vyhodí výjimku DibiException nebo potomka DibiDriverException.
tj. musíš použít try-catch, abys odchytil chybu. Chyby, které takhle mohou nastat jsou syntax error, timeout na databázi, nedostupná databáze, práva, trigger validace či dotaz si vzal až příliš zdrojů a pár dalších.
Tohohle chceš docílit?
16. 5. 2016 03:33:31
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196045
LM
verified
rating uzivatele
(17 hodnocení)
16. 5. 2016 06:39:08
Anebo už konečně používat PDO. Jak je ta DIBI stará? Podle mně měla DIBI kdysi opodstatnění, ale dnes, když je všechno kromě PDO označené jako zastaralé?
16. 5. 2016 06:39:08
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196044
David Musil
verified
rating uzivatele
(68 hodnocení)
16. 5. 2016 08:13:40
Napsal Leszek Madzia;1292070
Anebo už konečně používat PDO. Jak je ta DIBI stará? Podle mně měla DIBI kdysi opodstatnění, ale dnes, když je všechno kromě PDO označené jako zastaralé?
Dibi asi uplna nova nebude, v tom mas jiste pravdu. Urcite je varianta prepsat to jinak na neco novejsiho. Tomu se branit nebudu.
16. 5. 2016 08:13:40
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196043
David Musil
verified
rating uzivatele
(68 hodnocení)
16. 5. 2016 08:16:11
Napsal Souki;1292058
Co znamená, že dotaz proběhl správně?
Sel jsem na to uvahou, ze me nezajima, jestli puvodni data byla prepsana novymi data nebo byla prepsana daty stejnymi.
Aby byla moje uvaha jasna, premyslim tak, ze nekdo se dostane do detailu sveho uctu, kde ma telefonni cislo. Tam ma input pole, kde je to jeho tel. cislo vypsane. On ho ale neprepise, pouze dat opet "editovat", aby se vratil zpet. Takze dotaz na DB probehne, syntakticky tam zadna chyba neni a stejne tady potrebuju dostat zpet stav, ze "data byla zmenena". Dibi mi ale vrati pocet radku, kde ke zmene doslo a to je 0. Tady je teda muj problem.
16. 5. 2016 08:16:11
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196042
David Musil
verified
rating uzivatele
(68 hodnocení)
16. 5. 2016 08:17:28
Napsal TomášX;1292064
z dokumentace dibi:
tj. musíš použít try-catch, abys odchytil chybu. Chyby, které takhle mohou nastat jsou syntax error, timeout na databázi, nedostupná databáze, práva, trigger validace či dotaz si vzal až příliš zdrojů a pár dalších.
Tohohle chceš docílit?
Ano mas pravdu. Takhle je to logicky lepsi, takze se vyprdnout na testovani if ($sql) {TRUE/FALSE}
Kazdopadne, asi to stejne prepisu do toho PDO :)
16. 5. 2016 08:17:28
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196041
tomve
verified
rating uzivatele
(22 hodnocení)
16. 5. 2016 10:10:53
PDO execute hází false / true.... http://php.net/manual/en/pdostatement.execute.php
---------- Post added 16.05.2016 at 10:12 ----------
Napsal Leszek Madzia;1292070
Anebo už konečně používat PDO. Jak je ta DIBI stará? Podle mně měla DIBI kdysi opodstatnění, ale dnes, když je všechno kromě PDO označené jako zastaralé?
Jsem se v noci díval na dibi dokumentaci a, podle mě, je to vykopavka. Něco jak mysql knihovna.
16. 5. 2016 10:10:53
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196040
David Musil
verified
rating uzivatele
(68 hodnocení)
16. 5. 2016 10:31:43
Napsal Tomve;1292110
PDO execute hází false / true.... http://php.net/manual/en/pdostatement.execute.php
---------- Post added 16.05.2016 at 10:12 ----------
Jsem se v noci díval na dibi dokumentaci a, podle mě, je to vykopavka. Něco jak mysql knihovna.
Jop, souhlas, neni to zadne terno. Uz prepisuji na PDO.
16. 5. 2016 10:31:43
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196039
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
16. 5. 2016 11:04:16
Abychom si v tom udělali pořádek :) Dibi je univerzální knihovna, které se v initu nastaví, jaký driver má použít: mysql, mysqli, mssql, sqlite, pdo, ...
Lze tak velmi jednoduše psát aplikace, které jsou poměrně univerzální. Samotné dibi tedy podporuje PDO, ale defaultně ho nepoužívá mimo jiné proto, že je pomalejší.
PDO nepřináší oproti dibi žádné výhody, ale dibi má výhody oproti PDO.
"mysql" rozšíření je v php skutečně zastaralé, ale nahrazuje ho novější mysqlnd. Na něm není nic špatného. Je rychlé, podporované a dál vyvíjené. https://secure.php.net/manual/en/mysqlinfo.library.choosing.php
Dibi není žhavý nový projekt, ale je normálně vyvíjené a podporované - teď zrovna dostalo verzi 3. Vzhledem k tomu co dělá už na něm ale není moc co přidávat, takže se aktualizují hlavně drivery s tím, jak vycházejí nové verze databází.
Pokud bych ale řešil nový projekt, použil bych spíš Doctrine. Není to samé jako dibi nebo PDO, ale dnes už je praktičtější jít rovnou cestou ORM, než skládat ručně SQL dotazy.
16. 5. 2016 11:04:16
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196038
tomve
verified
rating uzivatele
(22 hodnocení)
16. 5. 2016 11:23:15
Jaké má dibi výhody, když neumí vrátit jeddnoduchý result (true/false) na query?
16. 5. 2016 11:23:15
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196037
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
16. 5. 2016 11:26:58
Já pořád ale nerozumím, proč chcete vracet true/false. Tak se to přece dělalo v PHP4. Dnes už akce buď proběhne nebo se vyhodí exception. Jediné kde to tak nefungovalo byly nativní php funkce, ale PHP7 už tenhle přístup taky opustilo.
16. 5. 2016 11:26:58
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196036
tomve
verified
rating uzivatele
(22 hodnocení)
16. 5. 2016 11:36:26
Napsal Souki;1292133
Já pořád ale nerozumím, proč chcete vracet true/false. Tak se to přece dělalo v PHP4. Dnes už akce buď proběhne nebo se vyhodí exception. Jediné kde to tak nefungovalo byly nativní php funkce, ale PHP7 už tenhle přístup taky opustilo.
Jo, na produkčním webu s vypnutými hlaškami se exception hodí vždy....
16. 5. 2016 11:36:26
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196035
TomasX
verified
rating uzivatele
(4 hodnocení)
16. 5. 2016 11:37:37
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.
16. 5. 2016 11:37:37
https://webtrh.cz/diskuse/update-dotaz-v-dibi-vyhodnoceni-true-false/#reply1196034
Pro odpověď se přihlašte.
Přihlásit