Итак, у меня есть это PHP Service
который подключен к моему Android
приложение и выполняет 2 запроса одновременно. Я прочитал, как определить, что происходит сбой, и я знаю, что один из моих сбоев, потому что EventSlots уже 0 и является INT unsigned
,
Тем не менее, другой оператор является успешным и выполняется. Очевидно, я хочу выполнить только оба, и если 1 не удается, don't execute anything at all
но верните ошибку для моего приложения.
Как бы я обнаружил, если одно из утверждений не удалось и STOP the other
от выполнения? Я, вероятно, могу избежать использования нескольких операторов и сделать 1, проверить, все ли в порядке, и только затем выполнить другое. Могу ли я достичь этого с помощью нескольких утверждений?
запрос:
"INSERT INTO GuestList(EventID, AccountID) VALUES (7, (SELECT AccountID FROM Accounts WHERE Username = 'test'));
UPDATE Events SET EventSlots = EventSlots-1 WHERE EventID = 7 ;"
Использовать транзакции PDO http://php.net/manual/en/pdo.transactions.php . Транзакция представляет собой набор запросов, которые должны быть выполнены атомарным способом. Если во время транзакции произойдет сбой, он автоматически выполнит откат до исходного состояния.
Других решений пока нет …