Zdravim,
Vec:
chcem vykonat po sebe 3x update query na db, uspesne vykonanie vsetkych query by malo viest k TRUE
query sa mi vykonava pomocou fcie updateData() a vracia mi to num_affected_rows()
teda vykonanie alebo nevykonanie query mozem overovat pomocou if(updateData())
{
echo "ok";
}
else
{
echo "not ok";
}
problem vsak nastava pri zluceni viac query pod jednu podmienku nasledovne:
if(updateData() && updateData() && updateData())
povedzme ze script prebehne nasledovne:
prve query sa vykona, druhe sa nevykona, dalej sa nepokracuje
Ako mam zabranit tomu aby sa vykonalo prve query ked sa podmienka bude rovnat FALSE? Alebo ako vykonat tie vsetky query so 100% uspesnostou?
Ak ste ma uplne nepochopili, napiste comu nechapete a budem sa to snazit vysvetlit.
Je potřeba všechny ty 3 dotazy sloučit do jednoho a uzavřít do transakce. Pak se udělají všechny 3 nebo nic.
Možná bychom dotaz lépe pochopili, kdybys psal s diakritikou.
To co chceš, jsou tzv. transakce. Takže si o tom něco prostuduj.
Jednoduše řečeno. Transakce je vykonání několika SQL dotazu s kontrolou. To znamená, že pokud všechny dotazy proběhnou v pořádku, tak celá transakce bude úspěšná. Pokud však některý z dotazů selže, tak transakce selhala a vše se vrátí do původního stavu. Dříve provedené dotazy v transakci se anuluji.
Není to ale jednoduchý. Použití transakce má podmínku. Tabulky musí být v InnoDB. MyISAM transakce nepodporuje.
Dakujem Vam za prejaveny zaujem odpovedat a za rychle a presne odpovede. Vsetko funguje ako ma.