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 :

[MySQL] requete SELECT retournant une seule ligne


Sujet :

SGBD Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut [MySQL] requete SELECT retournant une seule ligne
    Bien le bonjour ,

    tout d'abord j'utilise Perl sur WindowsXP, via ActivePerl 5.10.0 Build 1004.

    J'ai installé les modules NET::MySQL et DBD::mysqlPP.

    voici mon problème qui me semble vraiment louche:

    Lorsque j'exécute une requête me retournant un seul résultat(une seule ligne et une seul colonne), le script se bloque(je le lance dans cmd).


    voici le 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    #!C:\\Perl\\bin\\perl -w
     
    use strict;
    use warnings; 
     
    # PERL MODULES WE WILL BE USING
    use DBI;
    use DBD::mysqlPP;
     
    # CONFIG VARIABLES
    my $platform = "mysqlPP";
    my $database = "abcd";
    my $host = "192.168.1.2";
    my $port = "3306";
    my $user = "abcd";
    my $pw = "abcd";
     
    # DATA SOURCE NAME
    my $dsn = "dbi:$platform:$database:$host:$port";
     
    # PERL DBI CONNECT
    my $connect = DBI->connect($dsn, $user, $pw);
     
    # PREPARE THE QUERY
    my $query = "SELECT MAX(`champs2`) FROM Table1 WHERE `champs1` = 'pwet'";
    my $query_handle = $connect->prepare($query);
     
    # EXECUTE THE QUERY
    $query_handle->execute();
     
    # BIND TABLE COLUMNS TO VARIABLES
    $query_handle->bind_columns(\my $LBR);
     
    # LOOP THROUGH RESULTS
    while($query_handle->fetch()){
    	print $LBR;
    }
    Si vous pouviez m'aider, ce serait super sympa merci d'avance !

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    Bonjour,

    le script se compile-t-il bien ?

    Et la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_handle->bind_columns(\my $LBR);
    ne devrait-elle pas être écrite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_handle->bind_columns(my \$LBR);
    ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Salut,

    As-tu liberé les resources et fermer ta connexion?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $query_handle->finish();
    $connect->disconnect();

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    ->Arioch

    le script se compile-t-il bien ?
    Euh alors sa je ne sais pas, car l'invite de commande reste figé (voir la pièce jointe)

    sinon pour la déclaration, il ne comprend pas si je met l'antislash entre le my et le nom de la variable


    ->Mygale1978

    Je libère les ressources et ferme effectivement la connexion.


    Merci pour votre aide
    Images attachées Images attachées  

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 572
    Points : 2 014
    Points
    2 014
    Par défaut
    En mode commande (fenêtre Ms Dos), que donne ceci :

    ?

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    La première chose à faire c'est de repérer exactement où le problème se situe, donc soit tu utilises le débogueur Perl (perl -d, see perldoc perldebug pour plus de détails), soit tu truffes ton script de print aux points clés.

    --
    Jedaï

  7. #7
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C:\Documents and Settings\Administrateur>perl -c -w test1.pl
    test1.pl syntax OK
    Sa à l'air ok !


    Sinon j'ai testé le perl -d et voila le résultat :

    c'est à la ligne où il exécute la requete qu'il bloque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $query_handle->execute();
    (voir image jointe)

    la requête en elle même est pourtant ok (testée sur phpMyAdmin et en command line).

    Merci de l'attention portée à mon égard.
    Images attachées Images attachées  

  8. #8
    Invité
    Invité(e)
    Par défaut
    Salut,

    as-tu un client mysql sur la machine où le script s'execute?

    Peux-tu executer le query à partir de ce client et voir si ça bloque aussi?

  9. #9
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Heu non je n'ai pas vraiment de client MySQL sur la machine, par contre j'utilise le mysql.exe d'un serveur que j'ai en local (que j'utilise pour la prog web).

    En utilisant ceci (mysql -h adresse_ip -u user -p) et en lançant la requête cela fonctionne.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Ok

    As-tu testé éventuellement avec le module DBD::mysql?

  11. #11
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Mygale
    As-tu testé éventuellement avec le module DBD::mysql?
    Hé bien malheureusement non : je ne peux pas l'installer avec le Perl Package Manager et je n'ai malheureusement pas trouvé de version déjà compilée pour windows de ce module...

  12. #12
    Invité
    Invité(e)
    Par défaut
    Pourtant il a l'air d'être disponible pour active perl 5.10.

    http://cpan.uwinnipeg.ca/PPMPackages/10xx/



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Packages in this directory may be installed by giving the following command at a DOS prompt:
     
     C:\>ppm install http://cpan.uwinnipeg.ca/PPMPackages/10xx/package.ppd
    DBD-mysql: version 4.005
    abstract: A MySQL driver for the Perl5 Database Interface (DBI)
    author: Rudy Lippan <rlippan@remotelinux.com>

  13. #13
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Hello,

    Désolé je n'avais pas réussi à trouver enfin bon avec DBD::mysql sa fonctionne nickel. Je pense bien que c'est un problème du Pure Perl ...

    Merci Mygale et tous les autres

    Donc c'est !

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

Discussions similaires

  1. [MySQL] requête select qui ne retourne qu'une seule ligne
    Par rose25 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 03/07/2009, 15h11
  2. Réponses: 3
    Dernier message: 24/10/2008, 19h31
  3. Réponses: 2
    Dernier message: 22/10/2008, 17h53
  4. Réponses: 5
    Dernier message: 27/06/2006, 20h27
  5. [sql] Retourner une seule ligne..
    Par b_lob dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 24/05/2006, 15h15

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