Hallo ik probeer om 2 sql acties uit te voeren in 1 query
INSERT INTO Tickets (Minecraftnaam, Showid) VALUES ('TheIndra', '1')

en
UPDATE Shows SET Gekocht = '1' WHERE id='2'

Daarvor heb ik al meerdere code geprobeerd, Maar ik krijg steeds een error? Zou iemand mij kunnen helpen met de juiste code?
jup

Edit:
Maar ik lees net dat er ook een multi-query functie bestaat:
mysqli_multi_query()
- Ariën - op 23/06/2016 00:28:50

jup

Edit:
Maar ik lees net dat er ook een multi-query functie bestaat:
mysqli_multi_query()


Het is nu gelukt, Ik dacht altijd dat je meerdere queries kon stoppen in mysqli_query Bedankt!

[size=xsmall]Toevoeging op 23/06/2016 00:34:36:[/size]

Slotje?
FIjnd at het opgelsot is.
Nee, slotjes delen we niet uit als iets opgelost is. Het topic zinkt vanzelf wel omlaag.
- Ariën - op 23/06/2016 00:28:50

Maar ik lees net dat er ook een multi-query functie bestaat:
mysqli_multi_query()

NNNNNNNEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

Niet gebruiken!

Om meerdere redenen niet. Long story short, het heeft veels te veel haken en ogen.

Echt, bespaar jezelf een hoop ellende en gebruik losse queries.

Ja, de START TRANSACTION; en COMMIT; weglaten, zodat je twee queries overhoudt. Je moet wel goed opletten dat je database consistent blijft.

Als er iets is dat databases consistent houdt, is het wel het gebruik van transacties!
Thomas van den Heuvel op 23/06/2016 00:40:45

[quote="- Ariën - op 23/06/2016 00:28:50"]
Maar ik lees net dat er ook een multi-query functie bestaat:
mysqli_multi_query()

NNNNNNNEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE

Niet gebruiken!

Om meerdere redenen niet. Long story short, het heeft veels te veel haken en ogen.

Echt, bespaar jezelf een hoop ellende en gebruik losse queries.
[/quote]
Argumentatie is gelukkig niet verboden!
Je hebt geen garantie dat alle queries worden uitgevoerd.
In welk geval wijzigingen mogelijk half doorgevoerd worden.

Ook is het beveiligen van dat soort queries een ramp.

En tot slot, juist voor dit specifieke doel, het-als-één-geheel-uitvoeren-van-meerdere-queries-(of-in-het-geheel-niet), zijn transacties!

Een multiquery is niet voor dit doel geschikt omdat als die batch halverwege strandt er geen rollback is. Dan zit er dus inconsistente bagger in je database.

Ook kan de detectie van OF er een query onderuit ging en WELKE nogal lastig zijn in een batch :/.
Met transacties:

<?php
$db = new mysqli('127.0.0.1', 'username', 'passwd', 'dbname');
$db->begin_transaction();
$db->query("INSERT INTO Tickets (Minecraftnaam, Showid) VALUES ('TheIndra', '1')");
$db->query("UPDATE Shows SET Gekocht = '1' WHERE id='1'");
$db->commit();
$db->close();
?>

Ik vraag me alleen af of dit wel je bedoeling is:
UPDATE Shows SET Gekocht = '1' WHERE id='1';

Dit is eigenlijk geen update, maar een reset: je stelt Gekocht steeds opnieuw op 1 in.

Reageren