Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1875 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Récupérer le résultat d'une requète SQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Perl] Récupérer le résultat d'une requète SQL

n°1828082
Thordax
Shop smart. Shop S-Mart !
Posté le 16-12-2008 à 17:08:45  profilanswer
 

:hello:

 

Dans mon code Perl, j'effectue une commande SQL de ce genre :

 
Code :
  1. $sth = $dbh->prepare(insert into `toto` ( `index`, `col2` ) VALUES ( 'val1', 'val2'));
 

Or, dans ma table toto, l'entrée "index" est une clé unique, donc quand on fait une insertion d'une valeur avec un index déjà dans la table, l'insertion ne s'effectue pas et c'est tout à fait normal.

 

Problème 1 : Si l'insertion ne marche pas, mon code plante et ne continue pas :/

 

Problème 2 : Je veux récupérer le message me disant que l'insertion n'a pas eu lieu => ceci permettant d'identifier ce que l'utilisateur doit faire (champ à remplir / changer etc) :d

 

Quelqu'un aurait-il une idée pour solutionner l'un de ces deux problèmes ? :d

 

Merci d'avance !

 

Par ailleurs, la commande :

 
Code :
  1. $sth->execute() or die "Unable to execute query: $dbh->errstr";

ne marche pas également ...


Message édité par Thordax le 16-12-2008 à 17:18:38

---------------
Atari 520 ST 256 Ko
mood
Publicité
Posté le 16-12-2008 à 17:08:45  profilanswer
 

n°1828318
gilou
Modérateur
Modzilla
Posté le 17-12-2008 à 02:52:52  profilanswer
 

Si tu fais un
$dbh->{RaiseError} = 0;
apres la connection, et avant ton prepare, ca plante toujours?
 

Citation :

$sth->execute() or die "Unable to execute query: $dbh->errstr";


Normalement, tu as un message d'erreur accessible avec $dbh->errstr() apres ton prepare, et $sth->errstr() apres to execute. Donc la ca devrait etre $sth->errstr().  
 
A+,


Message édité par gilou le 17-12-2008 à 02:54:55

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°1828387
matafan
Posté le 17-12-2008 à 11:23:21  profilanswer
 

Normalement le prepare() ne devrait pas échouer. C'est le execute() qui devrait échouer. Je ne sais pas si c'est la bonne méthode, mais quand j'ai eu à gérer ce genre de problème j'ai fais comme ça :

if (!$sth->execute($toto)) {
    if ($sth->err eq '23505') {
        # UNIQUE violation: $toto already exists in DB
        ...
    } else {
        # Some other, unrecoverable error
        ...
    }
}


Je pense que le code d'erreur qui indique un conflict sur une donnée UNIQUE (23505 chez moi, avec db2) varie suivant les DB, donc il faut faire le test chez toi pour récupérer le bon code d'erreur.


Message édité par matafan le 17-12-2008 à 11:24:16
n°1828482
Thordax
Shop smart. Shop S-Mart !
Posté le 17-12-2008 à 14:01:32  profilanswer
 

Merci à vous deux, normalement, la technique matafan devrait fonctionner, je vous tiens au jus si ça merde.


---------------
Atari 520 ST 256 Ko

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  [Perl] Récupérer le résultat d'une requète SQL

 

Sujets relatifs
Aide pour une requête (MySQL)SQL -> Probleme contraintes et relations, je bloque
envoyer et reccuperer une requete[C#] Impossible d'effectuer une requete HTTP POST avec HttpWebRequest
Urgent SVP : Comment renomer un fichier récupérer par FTPrequête sql sur deux colonnes
WYSIWYG - Enregistrer code HTML - Recuperer format interprétéeAffichage résultat COUNT
Script PERL & PHP pour interface CISCO avec carte CSMRécuperer des emails, problèmes d'encodages
Plus de sujets relatifs à : [Perl] Récupérer le résultat d'une requète SQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR