IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SGBD Perl Discussion :

DBI - perl résultat bizarre


Sujet :

SGBD Perl

  1. #1
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut DBI - perl résultat bizarre
    Hello,


    j'ai ce bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    my $BaseDeDonnees = "xxx";
    my $NomHote       = "localhost";
    my $login         = "root";
    my $MotDePass     = "";
     
    my $dbp = DBI -> connect( " DBI:mysql:$BaseDeDonnees;$NomHote ",
        $login, $MotDePass )
        or die " Connection impossible à la base de donnees $BaseDeDonnees ! " ;
     
    $SQL = ( ' SELECT colonne_1 FROM MaTable WHERE colonne_3 = "$var" ' ) ;
    my $tata = $dbp -> prepare ( $SQL ) ;
     
      $dbp->disconnect();
     
    if ($tata){print $tata."\n";}

    Qu'est ce qui peut me donner un résultat de type :

    DBI::st=HASH(0x1cf3f24) ?

    Merci
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  2. #2
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonjour,

    La fonction "prepare" n'exécute pas ta requête : il manque l'appel à la fonction "execute" pour effectivement faire ton select. Puis de parcourir les résultats avec des méthodes comme "fetchall_arrayref()" par exemple (il en existe d'autres).

    Pour de plus amples informations :
    Regarde la doc sur DBI : http://search.cpan.org/~timb/DBI/DBI.pm
    plus un tuto : http://djibril.developpez.com/tutoriels/perl/perl-dbi/

  3. #3
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    erreur
    erreur
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  4. #4
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    my $BaseDeDonnees = "biblioperio";
    my $NomHote       = "localhost";
    my $login         = "root";
    my $MotDePass     = "";
     
    my $dbp = DBI->connect( "DBI:mysql:$BaseDeDonnees;$NomHote",
        $login, $MotDePass)
        or die "Connection impossible à la base de donnees $BaseDeDonnees !";
     
    $SQL = ('SELECT titre-propre FROM titre WHERE issn="$issn"');
    my $tata = $dbp -> prepare($SQL);
    my $sth = $dbp -> execute($tata);
     
    $dbp->disconnect();
     
    if ($tata){print $tata."\n";}
     
     
    }
    message

    can't locate object methode execute....
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

  5. #5
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    C'est plutôt cela qu'il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my $sth = $dbp->prepare($SQL);
    my $query_res = $sth->execute();

  6. #6
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Pour compléter histoire de :

    Par exemple avec la méthode fetchall_array_ref on récupère la référence sur le tableau contenant le résultat de la requête (il en existe d'autres regarde le module DBI) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    my $sth = $dbp->prepare($SQL) or die "$DBI::errstr";;
    my $query_res = $sth->execute();
    if(!$query_res){
       die "$DBI::errstr";
    }
    my $ref_result = $sth->fetchall_arrayref() or die "$DBI::errstr";
     
    foreach my $result(@$ref_result){
      print $result->[0]."\n";
    }
    Ici je n'affiche que le premier élément de ta requête à savoir normalement le titre-propre

    Exemple avec fetchall_hashref :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    my $sth = $dbp->prepare($SQL) or die "$DBI::errstr";;
    my $query_res = $sth->execute();
    if(!$query_res){
       die "$DBI::errstr";
    }
    my $ref_result = $sth->fetchall_hashref();
    while( my $result($sth->fetchall_hashref())){
      print $result->{titre-propre}."\n";
    }

  7. #7
    Membre habitué Avatar de PadawanInPerl
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 462
    Points : 186
    Points
    186
    Par défaut
    Merci Beniou...je travaille dessus
    Windows 7, 64 bit
    Perl 5.12, ActivePerl
    Python 3.2, ActivePython ( NOVICE ! )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Résultat bizarre d'une requête
    Par yesil08 dans le forum Bases de données
    Réponses: 19
    Dernier message: 07/05/2008, 17h18
  2. Résultat bizarre d'une fonction numérique simple
    Par feynman dans le forum Fortran
    Réponses: 9
    Dernier message: 19/11/2007, 22h07
  3. [MySQL] Résultat bizarre pour une requête
    Par masseur dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/05/2007, 11h46
  4. conversion vers l'hexa et résultat bizarre
    Par sanatou dans le forum C
    Réponses: 16
    Dernier message: 04/01/2007, 08h39
  5. [VBA-E] format date/mois en entier : résultat bizarre
    Par illight dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2006, 15h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo