Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Ralat MySQL daripada Kaedah `prepare()` PDO dalam PHP?

Bagaimana untuk Mendapatkan Ralat MySQL daripada Kaedah `prepare()` PDO dalam PHP?

Susan Sarandon
Susan Sarandonasal
2024-12-21 06:51:09565semak imbas

How to Retrieve MySQL Errors from PDO's `prepare()` Method in PHP?

Bagaimana untuk mendapatkan semula ralat pertanyaan daripada PDO prepare() dalam PHP?

Masalah:

Pertimbangkan kod PHP berikut :

$st = $db->prepare("SELECT * FROM c6ode");

Bagaimana anda boleh mendapatkan ralat MySQL yang dimaksudkan untuk pertanyaan dalam ini instance?

Penyelesaian:

Untuk mendapatkan semula maklumat ralat daripada prepare(), anda mesti:

  1. Tetapkan atribut mod ralat PDO: :ATTR_ERRMODE kepada PDO::ERRMODE_EXCEPTION.
  2. Lumpuhkan Ciri PDO::ATTR_EMULATE_PREPARES, kerana ia menghalang pelayan MySQL daripada memproses kenyataan dengan serta-merta.

Berikut ialah contoh:

<?php
$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'localonly', 'localonly');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$pdo->prepare('INSERT INTO DoesNotExist (x) VALUES (?)');

Kod ini akan membuang pengecualian dan mencetak perkara berikut mesej ralat:

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

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Ralat MySQL daripada Kaedah `prepare()` 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