2016-03-30 19 views
0

Veritabanı satırları yoksa, Exceptions komutunu kullanarak bir try-catch bloğu kullanmayı içeren bir alıştırma üzerinde çalışıyorum. İşte read() fonksiyonun bir örnek: sınıfının dışındaPHP veritabanı, PDO bağlantısı kullanılarak try-catch bloğunda hata işleme

class Manager { 
    private $desc; 
    private $id; 
    private $newDesc; 
    public function read($id) { 
     $db = new PDO('mysql:host=localhost; dbname=database', 'root', ''); 
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     try { 
      $sql = "SELECT * FROM table where `id` = :id_val"; 
      $query = $db->prepare($sql); 
      $query->bindParam(":id_val", $id); 
      $query->execute(); 
      $results = $query->fetchAll(PDO::FETCH_ASSOC); 
     } catch (Exception $e) { 
      echo "Could not return specified row! <br />"; 
      echo $e->getMessage(); 
     } 
     echo "<pre>"; 
     print_r($results); 
     echo "</pre>"; 
    } 
} 

Ben çalıştırın:

$manager = new Manager(); 
$manager->read(44); // this is an id that IS NOT an existing record 

Tarayıcım gösterir Array()
Ben try-catch içine yanlış ifadeleri yerleştirerek veya başka bir şey mi mıyım tamamen?

+0

boş bir sonuç kümesine sahip olmak, yalnızca ayrı ayrı ele alınmayacak, yalnızca ayrı ayrı ele alınmalıdır – Ghost

+0

"Veritabanı satırları yoksa, istisnalar" - Kendi özel durumunuzu atmanız gerekir çünkü bu, varsayılan olarak bir tanesini atmaz. – Mike

cevap

1

Bu normal davranıştır, "catch try" ifadeleri hataları yakalar, istisnalar ... Kimliği verilen bir kayıt hata değildir. Eğer kontrol etmek isterseniz orada kaydıdır veya bu sayım 0'dan büyükse senin sonuç

count($results); 

seti sayabilir değil, onun var.

+1

Teşekkürler @tanaydin, try-catch bloğunun nasıl çalıştığını yanlış yorumluyordum – kmancusi