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

Mengapa Pengecualian PDO Saya Membuang Nilai Batal dan Tidak Melaksanakan?

Susan Sarandon
Lepaskan: 2024-10-28 12:06:01
asal
469 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan