2016-03-20 23 views
0

'u çalıştırmayın. Android uygulamasına bağlanan bu PHP Service var ve bir kerede 2 sorgu çalıştırıyor. Birinin başarısız olup olmadığını nasıl algılayacağımı okudum ve birimin başarısız olduğunu biliyorum çünkü EventSlots zaten 0 ve bir INT unsigned. Bununla birlikte, diğer ifade başarılıdır ve yürütülür. Açıkçası, sadece ikisini birden çalıştırmak istiyorum, ve 1 başarısız olursa, don't execute anything at all ancak Uygulamam için bir hata döndürürüm.PHP PDO - Çoklu İfadeler - 1 başarısız olursa, diğer

İfadelerden birisinin başarısız olup olmadığını ve STOP the other'un çalışıp çalışmadığını nasıl anlarım? Muhtemelen birden çok deyim kullanmaktan kaçınabilir ve 1 yapıp, tamam olup olmadığını kontrol edebilir ve yalnızca diğerini yürütürüm. Bunu birden çok ifadeyle yapabilir miyim?

Sorgu:

"INSERT INTO GuestList(EventID, AccountID) VALUES (7, (SELECT AccountID FROM Accounts WHERE Username = 'test')); 
UPDATE Events SET EventSlots = EventSlots-1 WHERE EventID = 7 ;" 
+0

Bir işlem kullanın http://php.net/manual/en/pdo.begintransaction.php – JimL

+0

_why_ ilk ifadenin başarısız olduğunu biliyorsanız (yazdığınız gibi), neden bir şey yürütmek zorundasınız? Bunu yapmak için _prior_ olduğunu biliyorsunuz, çünkü tüm bilgileriniz var. – arkascha

+0

Teşekkürler @JimL Bunları bilmiyordum bile. Çok yararlı görünüyor, şimdi bunları deneyeceğim. Ve arkascha, bunu biliyorum çünkü o belirli Kullanım Vakasını test ediyorum. Bir kullanıcı zaten mevcut 0 yuvaya sahip bir olaya katılmaya çalıştığında (benim bunu bilmez) uygulamasında bir işleyiciyi uygulamak için EventSlots'u 0'a ayarlıyorum. – iBobb

cevap

1

PDO işlemleri http://php.net/manual/en/pdo.transactions.php. Bir işlem, atomik bir şekilde yürütülmesi gereken bir dizi soruyu temsil eder. İşlem sırasında bir şey başarısız olursa, başlangıç ​​durumuna otomatik olarak geri dönüş gerçekleştirir.

İlgili konular