Dabra720 / educom-webshop-database

0 stars 0 forks source link

Maak gebruik van SQL transactions als je meerdere calls naar de database doet die allemaal moeten lukken #21

Open JeroenHeemskerk opened 1 year ago

JeroenHeemskerk commented 1 year ago

Als je een serie calls naar de database doet zoals je hieronder doet https://github.com/Dabra720/educom-webshop-database/blob/afdc756d2429a051bf8077fc064a56cee091ff72/repository.php#L113-L128

Dan wil je eigenlijk zorgen dat als er een fout gaat dat degene die ervoor zitten ook worden teruggedraaid, zodat het of allemaal werkt, of geen van allen zijn uitgevoerd.

Dit kan je doen door gebruik te maken van database transacties, bij een database transactie zeg je dat je de transactie start, dan wordt je tabel in een toestand gebracht dat alleen jij er wijzigingen op kan aanbrengen en daarna voer je een aantal commando's op en zeg je 'commit'. Als er ergens een commando fout gaat zeg je 'rollback' en dan worden alle acties die je sinds de start hebt gedaan teruggedraaid.

In php start je zo'n SQL transactie door de autocommit uit te schakelen

JeroenHeemskerk commented 1 year ago

p.s. als de mysqli_query op regel 123 faalt wordt daar nu geen exceptie van gegooit.