Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Mesej Ralat PDO Saya Tidak Dipaparkan?

Mengapa Mesej Ralat PDO Saya Tidak Dipaparkan?

Susan Sarandon
Susan Sarandonasal
2024-12-24 20:45:10923semak imbas

Why Aren't My PDO Error Messages Showing Up?

Cara Mendapatkan Maklumat Ralat daripada PDO

Apabila menggunakan PDO, anda mungkin menghadapi situasi di mana mesej ralat tidak dipaparkan, walaupun menetapkan mod ralat kepada PDO::ERRMODE_WARNING atau PDO::ERRMODE_EXCEPTION. Artikel ini akan menyelidiki sebab di sebalik tingkah laku ini dan menyediakan penyelesaian untuk menyelesaikan isu tersebut.

Memahami Tetapan Mod Ralat

PDO menyediakan tiga pilihan untuk mod ralat: PDO ::ERRMODE_SILENT, PDO::ERRMODE_WARNING dan PDO::ERRMODE_EXCEPTION. Secara lalai, PDO beroperasi dalam mod PDO::ERRMODE_SILENT, yang menyekat semua mesej ralat. Menetapkan mod kepada PDO::ERRMODE_WARNING menyebabkan PDO memaparkan mesej ralat sebagai amaran PHP, manakala PDO::ERRMODE_EXCEPTION menimbulkan pengecualian untuk ralat.

Senario Contoh

Dalam anda contoh kod, anda sedang cuba menyediakan pernyataan SQL yang tidak sah (@$%T$!!!) dan gagal untuk mendapatkan semula sebarang mesej ralat. Ini berlaku kerana kenyataan disediakan yang dicontohi, yang digunakan secara lalai, tidak melakukan semakan sintaks semasa fasa prepare(). Akibatnya, ralat hanya dikesan semasa fasa execute().

Penyelesaian

Untuk menyelesaikan isu ini, anda harus memastikan pemacu MySQL anda menyokong pernyataan yang disediakan asli . Penyataan yang disediakan asli melakukan semakan sintaks semasa fasa prepare(), membolehkan anda menangkap ralat dengan segera. Untuk mengaktifkan pernyataan yang disediakan asli, tambahkan baris berikut pada kod anda:

$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

Selain itu, anda boleh menggunakan kaedah setAttribute() untuk menetapkan mod ralat kepada PDO::ERRMODE_EXCEPTION. Ini akan menyebabkan PDO membuang pengecualian untuk ralat, menjadikannya lebih mudah untuk mengendalikannya dalam kod anda.

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

Dengan menggunakan pernyataan yang disediakan asli dan menetapkan mod ralat kepada PDO::ERRMODE_EXCEPTION, anda boleh memastikan bahawa PDO akan memberikan mesej ralat terperinci, membolehkan anda mendiagnosis dan menyelesaikan sebarang isu berkaitan pangkalan data dengan berkesan.

Atas ialah kandungan terperinci Mengapa Mesej Ralat PDO Saya Tidak Dipaparkan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn