Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Mesej Ralat PDO Saya Kosong Walaupun Menetapkan Mod Ralat?

Mengapa Mesej Ralat PDO Saya Kosong Walaupun Menetapkan Mod Ralat?

Patricia Arquette
Patricia Arquetteasal
2024-12-18 20:45:14261semak imbas

Why Are My PDO Error Messages Empty Despite Setting Error Modes?

Mengekstrak Mesej Ralat daripada PDO: Menyelesaikan Masalah Respons Tidak Lengkap

Apabila bekerja dengan PDO (Objek Data PHP), mendapatkan semula mesej ralat boleh menjadi mencabar. Isu ini timbul apabila anda telah menetapkan mod ralat untuk memaparkan amaran atau pengecualian, tetapi anda masih gagal mengeluarkan maklumat ralat yang dijangkakan.

Dalam contoh yang diberikan, kod menetapkan mod ralat kepada amaran:

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

Tetapi pernyataan print_r() untuk PDOStatement dan errorInfo() mengembalikan output kosong. Untuk menyelesaikan masalah ini:

  • Sahkan Penyata Disediakan Asli: Pemacu MySQL menyokong pernyataan yang disediakan asli. Pastikan versi MySQL anda serasi (4.1 atau lebih baru).
  • Timpa Penyediaan Ditiru: Secara lalai, PDO menggunakan kenyataan yang disediakan ditiru apabila MySQL melaporkan untuk menyokongnya. Jika anda mengalami masalah, cuba tetapkan pemacu PDO secara eksplisit untuk menggunakan pernyataan asli:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ATTR_PERSISTENT);
  • Tukar kepada Pengendalian Pengecualian: PDO boleh membuang pengecualian apabila ralat berlaku. Daripada menggunakan amaran, cuba tetapkan mod ralat kepada pengendalian pengecualian:
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

Perubahan ini seharusnya mencetuskan pengecualian apabila pertanyaan SQL yang tidak sah dilaksanakan, memberikan anda maklumat ralat yang diperlukan.

Atas ialah kandungan terperinci Mengapa Mesej Ralat PDO Saya Kosong Walaupun Menetapkan Mod Ralat?. 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