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 :

regarder si une requête SELECT renvoit des résultats avec rows()


Sujet :

SGBD Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Par défaut regarder si une requête SELECT renvoit des résultats avec rows()
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [..]
                    my $sel = $dbconnect->prepare("SELECT * FROM  table_name");
                    $sel->execute() || die "pb de selection: $DBI::errstr";
     
                    if(my $sel->rows()==0){
     
                         open my($logs_content), '-|', 'ssh login\@host zcat path/fr/*/*/'.$filename.'' or die "Can't open pipe from ssh : $!\n"; //ligne 22
                         //suite du traitement...
                    }
                    else{
                            print "le fichier a deja ete traite";
                    }
    Voici l'erreur que me retourne mon script:
    Can't call method "rows" on an undefined value at Parser_LeadsLogs.pl line 20, <$dir_content> line 22.

    Merci d'avance pour votre aide

  2. #2
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par moook
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                    my $sel = $dbconnect->prepare("SELECT * FROM  table_name");
                    $sel->execute() || die "pb de selection: $DBI::errstr";
     
                    if(my $sel->rows()==0){
    Voici l'erreur que me retourne mon script:
    Can't call method "rows" on an undefined value at Parser_LeadsLogs.pl line 20, <$dir_content> line 22.

    Merci d'avance pour votre aide
    Il y a un my() de trop dans le if, je mets des parenthèses pour que tu vois mieux ce qui se passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( (my $sel)->rows() == 0 )
    Ici, tu crées une nouvelle variable lexicale $sel, qui a pour l'instant comme valeur "undef" et comme portée le if(){}else{} (ou si tu veux un bloc fictif entourant ces if, elsif et else éventuels). Cette nouvelle variable lexicale ne partage en rien sa valeur avec le $sel précédemment déclaré dans le bloc environnant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $sel = $dbconnect->prepare("SELECT * FROM  table_name");
    Il s'agit là de deux variables déconnectées !!
    Evidemment appeler une méthode sur "undef" ne marche pas génial...

    La solution est simple, il suffit de ne pas redéclarer $sel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    my $sel = $dbconnect->prepare("SELECT * FROM  table_name");
     
    $sel->execute() 
        or die "pb de selection: $DBI::errstr";
     
    if( $sel->rows() == 0 ){
    --
    Jedaï

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Par défaut
    C'est moi, ou si j'en crois la doc de DBI la methode row n'est pas fiable pour renvoyer le nombre de reponse d'une requete SELECT?
    Il semble privilegier un "SELECT COUNT(*)"

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

Discussions similaires

  1. Utilisation des alias dans la clause WHERE d'une requête SELECT
    Par OursRêveur dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 13/07/2013, 04h34
  2. Réponses: 4
    Dernier message: 09/01/2008, 20h10
  3. Réponses: 2
    Dernier message: 14/05/2007, 16h18
  4. [MySQL] comment exploiter le résultat d'une requête SELECT ?
    Par @min@ dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 22/04/2007, 20h52
  5. problème avec les résultats d'une requête select top1
    Par kariiim dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 19/03/2007, 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