PDO et gestion des erreurs

Petit nouveau ! | 2 Messages

24 avr. 2010, 17:59

Bonjour,
nouvelle sur le forum, je m'excuse si le topic a déjà été créé....
j'ai un problème pour faire remonter les erreurs MySQL au niveau de mon application.
VOILA mon problème : j'ai une table CLASSE, dans une base de données STAGES, dont voici le script :
CREATE TABLE IF NOT EXISTS `classe` (
  `idClasse` int(11) NOT NULL AUTO_INCREMENT,
  `Section` varchar(10) NOT NULL,
  `Libelle` varchar(100) NOT NULL,
  `OptionClasse` varchar(80) NOT NULL,
  `idProf` int(11) NOT NULL,
  PRIMARY KEY (`idClasse`),
  UNIQUE KEY `Section` (`Section`)
) 
au niveau de l'application, lors de la création d'une nouvelle classe (dans un formulaire) j'aimerais récupérer l'erreur de MYSQL si jamais l'utilisateur entre une section qui existe déjà. voila la fonction qui ajoute la nouvelle classe dans la table :
<?php
function ajoutClasse($db, $s, $l, $o, $idp)
		{
			try
			{
			$req = $db->prepare('INSERT INTO classe (Section, Libelle, OptionClasse, idProf) VALUES (:Section, :Libelle, :OptionClasse, :idProf)');
			$req->execute(array('Section'=> $s, 
					'Libelle' => $l, 
					'OptionClasse' => $o, 
					'idProf' => $idp
					));	
			echo "La classe a bien enregistr&eacute;e";
			catch (Exception $e){die ('Erreur : '.$e->getmessage());}
		}?>
Le try-catch présent ici vérifie la connexion a la base de données. J'aimerais introduire quelque chose ressemblant à ça :
<?php
if (!req->execute()) // si l'insertion n'a pas fonctionné
{
echo "\nPDOStatement::errorInfo():\n"; 
$arr = $sth->errorInfo();
print_r($arr); //#1062 - Duplicate entry for key 'Section' (erreur MySQL)
}
else {echo "La classe a bien enregistr&eacute;e";}?>
Je ne sais pas si je me suis bien fait comprendre, mais j'ai besoin d'une solution. D'avance merci

ViPHP
ViPHP | 5462 Messages

24 avr. 2010, 19:38

http://php.net/manual/fr/pdo.error-handling.php
:wink:

sinon ca aruait été
<?php
if (!$req->execute()) // si l'insertion n'a pas fonctionné
{
    print_r($req->errorInfo()); //#1062 - Duplicate entry for key 'Section' (erreur MySQL)
}

Petit nouveau ! | 2 Messages

26 avr. 2010, 02:09

j'ai inséré cette ligne à mon code, mais maintenant, il affiche l'erreur et pourtant insère la classe dans la table...