2013-12-17 24 views
5

Bu konuyla ilgili birkaç makale okudum, ancak hiçbiri bana yardım etmedi ve ne yapmam gerektiği konusunda kafam karıştı.mysqli sorgusunun başarılı olup olmadığını kontrol etmenin doğru yolu

Temel olarak, sql sorgusunun herhangi bir hata olmadan gerçekleştirilip gerçekleştirilmediğini kontrol etmek istiyorum. Bunu yapmak için, aşağıda gösterilen if ifadelerini kullanmam gerekiyor mu?

if($stmt = $mysqli->prepare("INSERT INTO table VALUES (?, ?, ?);")) 
{ 
    $stmt->bind_param("sss", $a, $b, $c); 

    if(!$stmt->execute()) 
    { 
     // Do I have to catch the problem here? 
    } 

    if($stmt->affected_rows === -1){ 
     // Do I have to catch the problem here? 
    } 

    $stmt->close(); 
} 
else 
{ 
    // Do I need to catch the problem here? 
} 
+0

* Neden * sonucu kontrol etmek istiyor musunuz? Bununla ne yapacaksın? –

+0

Sadece verilerin kaydedilip kaydedilmediğini bilmek zorundayım (Bu durumda), bir şey olduğu için olmasa bile bunu bilmem ve bu sorun hakkında kullanıcıyı bilgilendirmem gerekiyor ... – 0101

+0

Sorununuz mysqli ile değil, yani - demek ? Başka bir notifier yazacak mısın? Dosya sistemi hataları, sıfıra bölme, eksik değişken nedir? –

cevap

1

Sen prepare(), bind_param() ve execute() dönüş değerlerini kontrol edilmelidir. Başarısızlarsa hepsi false'u döndürür.

execute()false sonra INSERT başarıyla geçmesi gerekir, Sorundan etkilenen kaç satırbilmek istiyorsanız bu nedenle affected_rows kontrol sadece mantıklı dönmezse.

0
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

Bu satırı mysqli connect'in üstüne koyun. İhtiyacın olan tek şey bu.

Bir kullanıcıyı sorun hakkında bilgilendirmek için, AJAX isteğinin yanıt durumunu kontrol edin. 500 ise - o zaman kaydetme ile ilgili bir sorun vardı.

+0

Teşekkürler, ama bir sorum daha var. Ya bu benim için yeterli değilse ve bazı raporlar yapmak istiyorsam, örneğin kendime belirli bir hata hakkında mail gönderirim. Bu durumda en iyi seçenek hangisidir? – 0101

+0

Lütfen bir * gerçek * durum sunabilir misiniz? Böylece size en uygun seçeneği söyleyebilirim. Belirli bir mysql hatası durumunda e-posta göndermek bana çok yapay bir vaka gibi görünüyor. –

+0

Bazı blokta hata meydana geldiyse (Bu, yukarıda gördüğünüz gibi şu anda yorumda bulunur) Örneğin e-posta göndermek veya başka bir web sitesine yönlendirmek istiyorum. Şimdi bunu yapmanın en iyi yolunun ne olduğunu düşünüyorum. O yerlerdeki olası tüm hataları yakalamalı mıyım yoksa {} catch() {} deneyimini mi kullanmalıyım? – 0101

İlgili konular