2012-10-19 15 views
8

Nadal staram się opanować pdo.Złap i wyjmij błędy mysql pdo

Mam instrukcję insert, która jest wykonywana z pdo. Wstawianie działa świetnie, ale jeśli wystąpił błąd, chciałbym aby był wyświetlany użytkownikowi.

Mam poniżej spróbuj catch catch.

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; 
    } 

Jeśli zapytanie nie powiedzie się lub powiemy duplikatowi IDNumber, chcę, aby to zostało wyświetlone użytkownikowi.

Jeśli po prostu wypróbuję echo zmiennej $ wyjątek, to nie działa.

Chcę zwrócić błąd mysql dla użytkownika.

Jakakolwiek rada doceniona jak zawsze.

Dzięki, Ryan

UPDATE

nowy kod zgodnie z proponowanymi odpowiedziami:

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

$ Wyjątkiem będzie obiektem typu PDOException, a dwa z wielu atrybutów będzie kod błędu mysql i Komunikat o błędzie. –

Odpowiedz

16

Domyślnie PDO nie jest w stanie, który spowoduje wyświetlenie błędów. należy podać następujące w związku DB

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

Więcej informacji można zobaczyć Here

+0

Dzięki. Jeśli ustawię tryb błędu na "ERRMODE_WARNING", zwróci to ostrzeżenie na górze strony, jak ustawić wartość zmiennej i zwrócić ją tam, gdzie chcę na stronie. Dzięki – Smudger

+2

W swoim bloku catch możesz ustawić $ wyjątek na inną zmienną do późniejszego użycia. 'catch (wyjątek PDOException $) { $ błąd = $ wyjątek-> getMessage(); } // później w kodzie echo "Wystąpił błąd". $ error; ' lub coś podobnego. –