So habe ich diese PHP Service
, die Verbindung zu meiner Android
App ist und es führt 2 Abfragen auf einmal. Ich habe gelesen, wie man erkennt, wenn einer fehlschlägt, und ich weiß, dass einer von mir scheitert, weil EventSlots bereits 0 ist und ein INT unsigned
ist.PHP PDO - Mehrere Anweisungen - wenn 1 fehlschlägt, führen Sie nicht die anderen
Die andere Anweisung ist jedoch erfolgreich und wird ausgeführt. Offensichtlich möchte ich nur beide ausführen, und wenn 1 fehlschlägt, don't execute anything at all
aber einen Fehler für meine App zurückgeben.
Wie würde ich erkennen, wenn eine der Anweisungen fehlgeschlagen und STOP the other
ausführen? Ich kann wahrscheinlich vermeiden, mehrere Anweisungen zu verwenden, und tun Sie 1, überprüfen Sie, ob es OK war, und führen Sie erst dann das andere aus. Kann ich das mit mehreren Aussagen erreichen?
Abfrage:
"INSERT INTO GuestList(EventID, AccountID) VALUES (7, (SELECT AccountID FROM Accounts WHERE Username = 'test'));
UPDATE Events SET EventSlots = EventSlots-1 WHERE EventID = 7 ;"
Verwenden Sie eine Transaktion http://php.net/manual/en/pdo.begintransaction.php – JimL
Wenn Sie wissen, warum die erste Anweisung fehlschlägt (wie Sie geschrieben haben), warum müssen Sie überhaupt etwas ausführen? Sie wissen, dass _prior_ es ausführt, da Sie alle beteiligten Informationen haben. – arkascha
Danke @JimL Ich wusste nicht einmal von denen. Scheint sehr nützlich, ich werde diese jetzt ausprobieren. Und 'arkascha', das weiß ich, weil ich diesen speziellen Use Case teste. Ich setze die EventSlots auf 0, um einen Handler in meiner App zu implementieren, wenn ein Benutzer versucht, an einem Event teilzunehmen, das bereits 0 Slots zur Verfügung hat (das weiß ich, aber er würde es nicht tun). – iBobb