Page 1 sur 1

PDO et gestion des erreurs

Posté : 24 avr. 2010, 17:59
par lilimon972
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

Re: PDO et gestion des erreurs

Posté : 24 avr. 2010, 19:38
par stealth35
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)
}

Re: PDO et gestion des erreurs

Posté : 26 avr. 2010, 02:09
par lilimon972
j'ai inséré cette ligne à mon code, mais maintenant, il affiche l'erreur et pourtant insère la classe dans la table...