Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Mesej Ralat PDO Saya Tidak Dipaparkan?
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!