Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-07-2008 17:50:01

Mobman02
Nouveau membre
Date d'inscription: 23-07-2008
Messages: 2

[Zend_Exception] Utiliser l'exception pour identifier une erreur

Bonsoir,
j'ai une table avec un champ unique (le pseudo d'un membre pour l'exemple),
donc si je tente un insert() avec un pseudo qui est déjà en base, j'ai le droit à une belle exception,
seulement voilà, elle ne me sert absolument à rien !

Dans mes rêves les plus fou, il y aurait un moyen de récupérer la colonne qui a fait éclater l'exception, et je n'aurait qu'a en conclure que "ce pseudo existe déjà" et ainsi afficher une gracieuse erreur à mon utilisateur.

Au lieu de ça, Zend_Db_Exception me retourne ça :

Mysqli statement execute error : Duplicate entry 'coucou2' for key 3

Plus tous l'objet Zend_Db_Statement_Mysqli_Exception qui ne contient rien d'utile (pas même un code d'erreur).

A par parser le message de l'exception (BEURK!) je vois pas comment faire ?

Pour info mon code :

Code:

try {
            $valueArray     = array("USR_USERNAME"  => $name);
            $rows_affected  = $db->insert("FF_USR", $valueArray);

            $db->commit();
            
        } catch (Zend_Db_Exception $e) {
            
            $db->rollBack();
           echo "<pre>"; print_r( $e ); echo "</pre>";
           echo $e->getMessage();
            
        }

Voilà ça serait génial qu'une solution existe pour faire ce que je veux, c'est à dire savoir exactement d'ou vient l'exception, et ça sans devoir parser le message pour deviner qu'en faite, c'est le pseudo qui est dupliqué... d'autant qu'il pourrait s'agir aussi de l'email etc...

Merci d'avance !

Hors ligne

 

#2 23-07-2008 18:31:22

grandlap
Membre
Date d'inscription: 22-07-2008
Messages: 50

Re: [Zend_Exception] Utiliser l'exception pour identifier une erreur

Salut,

je ne sais pas si les codes d'erreurs sont différenciés pour Zend_Db_Exception mais tu pourrais tenter un

Code:

$e->getCode();

Analyser un entier, c'est clair que c'est quand même mieux qu'une chaîne wink

sinon, tu peux aussi tenter un count de ta colonne et vérifier si c'est supérieur à 0

Code:

        $sql = $db->quoteInto('
            SELECT count(USR_USERNAME)
            FROM `FF_USR`
            WHERE USR_USERNAME= ?', $name
        );
        
        $result = $db->query($sql)->fetchColumn();


if ($result>0){
//bla bla
}

Hors ligne

 

#3 23-07-2008 18:38:04

Mobman02
Nouveau membre
Date d'inscription: 23-07-2008
Messages: 2

Re: [Zend_Exception] Utiliser l'exception pour identifier une erreur

Merci pour ta réponse !

Malheureusement le getCode() me renvoi un int(0)...
Peut être à cause de MySQL ? Ou de l'adaptateur mysqli ? Je ne sais pas.

Quoi qu'il en soit je fais effectivement comme tu me le propose, à savoir une requete SQL en amont pour vérifier que tel ou tel valeur n'existe pas déjà... mais ça me fait deux requêtes en plus et ma clé unique dans mysql ne sert plus à rien : bref c'est pas du tout une solution élégante (mais pour le moment ça marche).

@+

Hors ligne

 

#4 24-07-2008 09:57:07

Julien
Membre
Date d'inscription: 16-03-2007
Messages: 501

Re: [Zend_Exception] Utiliser l'exception pour identifier une erreur

Et pourquoi pas un INSERT .... ON DUPLICATE KEY UPDATE ... ?

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages