PERL boucle infini

Résolu/Fermé
Arasutoru-sama Messages postés 4 Date d'inscription samedi 19 décembre 2009 Statut Membre Dernière intervention 21 mai 2010 - Modifié par Arasutoru-sama le 19/05/2010 à 15:06
Arasutoru-sama Messages postés 4 Date d'inscription samedi 19 décembre 2009 Statut Membre Dernière intervention 21 mai 2010 - 19 mai 2010 à 15:24
Bonjour,

j'ai une boucle "while" qui comme dit dans le titre est infini, j'aimerai l'utiliser pour afficher le résultat de ma requête SQL.

Voici le code :
my $dbh = DBI->connect( "dbi:mysql:dbname=$BaseDeDonnees;host=$NomHote;",  
                           $login, $MotDePass )  
                  or die "Connection impossible à la base de donnees $BaseDeDonnees !";  
   
my $lpriv = $dbh->prepare("SELECT nom, link, EPI FROM chizu_link WHERE chizu_link.nom = '$params[0]' OR chizu_link.idani = '$params[0]'ms[1]'");  
      $lpriv->execute() or die "Echec requete\n";                    
     while(@priv = $dbh->selectrow_array($lpriv))  
     {  
          $conn->privmsg($event->{'nick'}, "$priv[0] $priv[2] : $priv[1]");  
       $conn->print("<$nick>\t| $priv[0] $priv[2] : $priv[1]");  
     }  
$dbh->disconnect();


En PHP je n'ai jamais eu de soucis avec mes boucles.
J'utilise la dernières version du module DBI et DBD::Mysql .


2 réponses

jeangilles Messages postés 816 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 17 juillet 2012 186
19 mai 2010 à 15:04
Hum ...
J'enlèverai l'@ de
 @priv = $dbh->selectrow_array
0
Arasutoru-sama Messages postés 4 Date d'inscription samedi 19 décembre 2009 Statut Membre Dernière intervention 21 mai 2010
Modifié par Arasutoru-sama le 19/05/2010 à 18:21
je viens d'essayer si j'enlève le "@" de "@priv = $dbh->selectrow_array", PERL génère une erreur de plus j'avais oublié de remettre le "my" devant "@priv..." sans il ne compile pas.

Je viens de trouver la solution. Voici le code de la boucle :

while(my @priv = $lpriv->fetchrow_array)
{
  $conn->privmsg($event->{'nick'}, "$priv[0] $priv[2] : $priv[1]");
  $conn->print("<$nick>\t| $priv[0] $priv[2] : $priv[1]");
}
0