2012-10-19 29 views
8

Vẫn cố gắng để có được đầu của tôi xung quanh pdo.pdo bắt và xuất các lỗi mysql

Tôi có một câu lệnh chèn được thực thi với pdo. chèn công trình lớn tuy nhiên nếu có một lỗi tôi muốn nó hiển thị cho người dùng.

Tôi có khối try catch bên dưới.

try{ 
     $insertuser = $db->prepare('INSERT INTO `she_she`.`Persons` (`idnumber`,`addedby`,`firstname`, `middlename`, `surname`, `fullname`, `gender`, `birthdate`, `homelanguage`, `department`, `employeetype`, `employeestatus`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); 
     $insertuser->execute(array($idnumber,$user,$firstname, $middlename, $surname, $fullname, $gender, $birthdate, $language, $department, $employmenttype, $personstatus)); 
    } 
    catch(PDOException $exception){ 
     return $exception; 
    } 

Nếu truy vấn không thành công hoặc cho phép IDNumber trùng lặp, tôi muốn điều này được hiển thị cho người dùng.

Nếu tôi đơn giản thử lặp lại biến $ exception, nó không hoạt động.

Tôi muốn trả lại lỗi mysql cho người dùng.

Bất kỳ lời khuyên nào được đánh giá cao như mọi khi.

Cảm ơn, Ryan

CẬP NHẬT

mã mới theo câu trả lời đề xuất:

try{ 
     $insertuser = $db->prepare('INSERT INTO `she_she`.`Persons` (`idnumber`,`addedby`,`firstname`, `middlename`, `surname`, `fullname`, `gender`, `birthdate`, `homelanguage`, `department`, `employeetype`, `employeestatus`) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)'); 
     $insertuser->execute(array($idnumber,$user,$firstname, $middlename, $surname, $fullname, $gender, $birthdate, $language, $department, $employmenttype, $personstatus)); 
    } 
    catch(PDOException $exception){ 
     return $exception->getMessage(); 
    } 
echo "exception: ".$exception; 
+1

$ ngoại lệ sẽ là một đối tượng của loại PDOException, và hai trong số nhiều thuộc tính của nó sẽ là mã lỗi mysql và thông báo lỗi. –

Trả lời

16

Theo mặc định PDO không ở trong trạng thái đó sẽ hiển thị lỗi. bạn cần phải cung cấp sau đây có liên DB của bạn

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

Thông tin thêm có thể được nhìn thấy Here

+0

Cảm ơn. Nếu tôi đặt chế độ lỗi thành 'ERRMODE_WARNING', nó sẽ trả về cảnh báo trên đầu trang, làm cách nào tôi có thể đặt nó thành giá trị của biến và trả về điều này ở nơi tôi muốn trên trang. Cảm ơn – Smudger

+2

Trong khối catch của bạn, bạn có thể đặt $ exception cho một biến khác để sử dụng sau này. 'bắt (ngoại lệ PDOException $) { $ error = $ exception-> getMessage(); } // sau trong mã echo "Đã xảy ra lỗi". $ error; ' hoặc tương tự. –

Các vấn đề liên quan