مدیریت خطاها

پیدا کردن خطاهای دیتابیس بسیار وقت گیر و سخت است. یکی از ویژگی های بسیار خوب PDO این است که به وسیله آن می توانید خطاهای MYSQL را به وسیله کلاس PDOException به دام بیاندازید.برای این منظور می توانید بعد از ایجاد شیء از کلاس PDO و اتصال به دیتابیس از متد ()setAttribute جهت مدیریت خطاها استفاده کنید. این متد پارامترهای مختلفی می گیرد ولی ما به ساده ترین حالت آن بسنده می کنیم :

<?php
   $dsn      = 'mysql:dbname=university;host=localhost';
   $username = 'root';    
   $password = '';

   $conn = new PDO($dsn, $username, $password);

   $conn ->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
?>

به وسیله این متد نحوه برخورد با خطاها را تعیین می کنید. لازم نیست که کد بالا را از حفظ بلد باشید و کافیست که آن را کپی کنید. برای مدیریت بهتر خطاها، هنگام کار با دیتابیس بهتر است که از دستور try..catch استفاده کنید. پس حالت بهینه تر کد بالا به صورت زیر است :

<?php
    $dsn      = 'mysql:dbname=university;host=localhost';
    $username = 'root';    
    $password = '';

    try
    {
        $conn = new PDO($dsn, $username , $password);
        $conn ->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    } 
    catch (PDOException $e) 
    {
        echo 'Connection failed : ' . $e ->getMessage();
    }

    $conn = null;
?>

با اجرای کد بالا اگر خطایی در قسمت try رخ دهد، در قسمت catch به دام افتاده و توسط متد ()getMessage نمایش داده می شود. مثلا اگر مقدار متغیر password$ را اشتباه وارد کنید با خطایی به صورت زیر مواجه می شوید :

Connection failed : SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)

لطفا اگر نظر، پیشنهاد و یا انتقادی در باره مطلب بالا دارید در قسمت زیر مطرح بفرمایید.