PDO (Objek Data PHP) menawarkan antara muka piawai untuk berinteraksi dengan sistem pangkalan data yang berbeza. Walau bagaimanapun, beberapa cirinya mungkin tidak dikenali oleh pembangun PHP, yang membawa kepada soalan biasa mengenai pernyataan yang disediakan dan pengendalian ralat. Artikel ini menangani salah satu soalan lazim ini:
Untuk menyelesaikan isu ini, adalah penting untuk mendayakan pengendalian pengecualian PDO. Secara lalai, PDO mengendalikan ralat sebagai ralat PHP biasa, yang mungkin tidak kelihatan. Untuk mengendalikan ralat sebagai pengecualian, tetapkan atribut PDO ERRMODE kepada PDO::ERRMODE_EXCEPTION apabila membuat sambungan. Ini membolehkan PDO membuang pengecualian pada ralat pangkalan data, menjadikannya tersedia untuk pengendalian ralat.
Berikut ialah contoh menyediakan sambungan PDO dengan pengendalian pengecualian:
$dsn = "mysql:host=$host;dbname=$db;charset=utf8"; $opt = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // other options ); $pdo = new PDO($dsn, $user, $pass, $opt);
Dengan tetapan ini, semua ralat pangkalan data akan dibuang sebagai pengecualian. Pengecualian ini boleh ditangkap menggunakan blok try..catch atau pengendali ralat khusus. Pengecualian yang tidak ditangkap akan bertindak sebagai ralat PHP biasa, mengikut tetapan pelaporan ralat seluruh tapak.
Adalah penting untuk memastikan bahawa ralat PHP dapat dilihat. Pada pelayan pengeluaran, adalah disyorkan untuk mengelog ralat dan bukannya memaparkannya pada skrin. Ini boleh dicapai dengan menetapkan:
error_reporting(E_ALL); ini_set('display_errors', 0); ini_set('log_errors', 1);
Pada pelayan pembangunan, mungkin lebih mudah untuk memaparkan ralat pada skrin:
error_reporting(E_ALL); ini_set('display_errors', 1);
Sentiasa elakkan menggunakan operator penindasan ralat (@ ) sebelum pernyataan PDO, kerana ini boleh menyembunyikan maklumat ralat yang penting.
Atas ialah kandungan terperinci Pertanyaan PDO Gagal Secara Senyap: Bagaimana Saya Mendapatkan Mesej Ralat PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!