Rumah  >  Artikel  >  pangkalan data  >  Mengapa Pengecualian PDO Saya Membuang Nilai Batal dan Tidak Melaksanakan?

Mengapa Pengecualian PDO Saya Membuang Nilai Batal dan Tidak Melaksanakan?

Susan Sarandon
Susan Sarandonasal
2024-10-28 12:06:01373semak imbas

Why Are My PDO Exceptions Throwing Null Values and Not Executing?

Cara Mengendalikan Pengecualian PDO

Masalah:

Semasa menggunakan kelas PHP PDO, percubaan untuk mengendalikan ralat membawa kepada kod melaporkan nilai nol dan kekal tidak aktif.

Kod:

<code class="php">$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // Exception handling is enabled

$id = 33;
$name = "Mario Bros.";
$url = "http://nintendo.com";
$country = "jp";

try {
    $sql = "UPDATE table_users SET name = :name, url = :url, country = :country WHERE user_id = :user_id";
    $statement = $connection->prepare($sql);
    $statement->bindParam(':user_id', trim($id), PDO::PARAM_INT);
    $statement->bindParam(':name', trim($name), PDO::PARAM_STR);
    $statement->bindParam(':url', trim($url), PDO::PARAM_STR);
    $statement->bindParam(':country', trim($country), PDO::PARAM_STR, 2);
    $status = $statement->execute();
} catch (PDOException $e) {
    echo $e->getMessage();
}</code>

Penyelesaian:

PDO tidak membuang pengecualian secara automatik. Untuk mendayakan pengendalian pengecualian, baris berikut mesti ditambah sebelum cuba melaksanakan sebarang pertanyaan:

<code class="php">$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);</code>

Penjelasan:

Dengan menetapkan mod ralat PDO kepada ERRMODE_EXCEPTION, semua ralat berkaitan PDO akan dibuang sebagai pengecualian. Blok cuba/tangkap kemudiannya boleh digunakan untuk mengendalikan pengecualian ini dan memberikan mesej ralat yang bermakna kepada pengguna atau sistem pengelogan.

Atas ialah kandungan terperinci Mengapa Pengecualian PDO Saya Membuang Nilai Batal dan Tidak Melaksanakan?. 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