2012-10-19 5 views
8

Ancora cercando di capirci qualcosa.errori di cattura e output di pdo

Ho un'istruzione di inserimento che viene eseguita con pdo. insert funziona bene tuttavia se c'è un errore che vorrei che fosse visualizzato all'utente.

Ho il blocco di prova di seguito.

Se la query non riesce o consente di dire un IDNumero duplicato, voglio che questo venga visualizzato all'utente.

Se cerco semplicemente di echo la variabile $ eccezione non funziona.

Voglio restituire l'errore mysql all'utente.

Qualsiasi consiglio apprezzato come sempre.

Grazie, Ryan

UPDATE

nuovo codice secondo le risposte proposte:

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

$ eccezione sarà un oggetto di tipo PDOException, e due dei suoi molti attributi sarà il codice di errore mysql e messaggio di errore. –

risposta

16

Per impostazione predefinita PDO non è in uno stato che mostrerà gli errori. è necessario fornire il seguente nella vostra connessione DB

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

Maggiori informazioni possono essere visto Here

+0

Grazie. Se imposto la modalità errore su 'ERRMODE_WARNING' restituisce l'avviso in cima alla pagina, come posso impostarlo sul valore della variabile e restituirlo dove voglio sulla pagina. Grazie – Smudger

+2

Nel blocco catch è possibile impostare $ exception su una variabile diversa da utilizzare in un secondo momento. 'catch (eccezione $ PDOException) { $ error = $ exception-> getMessage(); } // successivamente nel codice echo "Si è verificato un errore". $ error; ' o qualcosa di simile. –