Diskuze: Sestavení komplikovanější transakce v php a mysql
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Predpokladam ze ti vypisuje nic neni ok. V takom pripade ti zlyhalo query. Skus tu podmienku rozbit takto
...
$dotaz .= "COMMIT;";
mysql_query($dotaz) or die('error: ' . mysql_error());
echo "vse je ok";
Ak ti ta query zlyha tak ti vypise aj error preco a skript skonci,
Ak nezlyha, tak uvidis vse je ok
Takhle se transakce vůbec nedělají a je to navíc dost nebezpečné, protože pochybuji tom že někdo hlídá aby se ti to nezaseklo. Použij PDO.
Já mám na transakce funkci(využívající PDO), do které se vloží pole
SQL dotazů. Začne se commitem a pokud nastane chyba nebo jiná událost na
serveru provede se rollback. Vše běží hezky automaticky.
BTW:
Pokud se neprovede rollback nebo commit a nechá se transakce otevřená, tak se
může DB pěkně seknout a pak je často potřeba celou DB restartovat.
Zobrazeno 4 zpráv z 4.