Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Ralat SQL daripada Penyata Disediakan PDO dalam PHP?

Bagaimana untuk Mendapatkan Ralat SQL daripada Penyata Disediakan PDO dalam PHP?

Barbara Streisand
Barbara Streisandasal
2024-12-15 20:47:17834semak imbas

How to Retrieve SQL Errors from PDO Prepared Statements in PHP?

Mengambil semula Ralat SQL dalam PDO/Sediakan dalam PHP

Untuk menyemak ralat yang disengajakan dalam pertanyaan MySQL menggunakan kaedah prepare() dalam PDO PHP, ikuti ini langkah:

1. Tetapkan Atribut Mod Ralat

Tetapkan atribut mod ralat kepada PDO::ERRMODE_EXCEPTION menggunakan kaedah setAttribute() untuk mendayakan pengendalian pengecualian. Ini akan menyebabkan kaedah penyediaan membuang pengecualian jika ralat berlaku:

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

2. Lumpuhkan Emulasi

Lumpuhkan PDO::ATTR_EMULATE_PREPARES dengan menetapkannya kepada palsu. Ini adalah perlu kerana pelayan MySQL mungkin tidak menilai pernyataan yang disediakan sehingga pelaksanaan, menjadikannya lebih sukar untuk mengesan ralat:

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

Contoh:

Kod berikut disediakan pertanyaan "PILIH * DARI c6ode" dan membuang pengecualian jika c6ode jadual tidak wujud:

try {
    $st = $db->prepare("SELECT * FROM c6ode");
} catch (PDOException $e) {
    // Handle the exception and display the error message
}

Output Pengecualian:

Melaksanakan kod di atas (dengan c6ode tidak wujud) akan mencetak mesej pengecualian yang menunjukkan bahawa jadual tidak wujud:

SQLSTATE[42S02]: Base table or view not found: 1146 Table 'test.c6ode' doesn't exist

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Ralat SQL daripada Penyata Disediakan PDO dalam PHP?. 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