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 :

Requête SQL avec une variable


Sujet :

SGBD Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 12
    Points
    12
    Par défaut Requête SQL avec une variable
    Bonjour,

    je souhaiterais exécuter une série de requête SQL différente à l'aide d'une boucle et d'un tableau contenant différentes valeurs (en l'occurence ici, les noms de mes tables SQL). Pour cela, j'ai besoin de mettre une variable dans ma requête au lieu de l'écrire de manière statique.

    Bref voici la partie de mon code pour comprendre ce que je veux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    my @tables = ("equipements","users","liaisons");
     
    foreach my $tables_master ($tables){
     
    my $enregistrements_master = $dbd_master->prepare('SELECT id FROM' .$tables_master)
    or die 'Impossible de préparer la requête : ' .$dbd_master->errstr;
    $enregistrements_master->execute
    or die 'Impossible d\'exécuter la requête : '.$enregistrements_master->errstr;
    $enregistrements_master->rows;
    ... et me dit que j'ai une erreur de syntaxe, sauf que je ne connais pas la syntaxe avec une variable, et je ne trouve pas la solution dans les cours perl...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 at test_replication_beta.pl line 41.
    Impossible d'exécuter la requête : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 at test_replication_beta.pl line 41.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'SELECT id FROM' .$tables_master
    Il manque un espace après le FROM, du coup ta requête SQL est incorrect.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    J'ai mis un espace entre le FROM et le ' mais j'ai toujours la même erreur... :/

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Peux-tu nous montrer ce que tu as fait ? Le message d'erreur est assez clair, erreur de syntaxe SQL. Donc soit ta requête SQL n'est pas bonne, soit tu crées une requête SQL incorrecte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    my @tables = ("equipements","users","liaisons");
     
    foreach my $tables_master (@tables) {
      my $requete = 'SELECT id FROM ' . $tables_master;  
      my $enregistrements_master = $dbd_master->prepare($requete)
        or die 'Impossible de préparer la requête : ' .$dbd_master->errstr;
      $enregistrements_master->execute
        or die 'Impossible d\'exécuter la requête : '.$enregistrements_master->errstr;
      $enregistrements_master->rows;

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 14
    Points : 12
    Points
    12
    Par défaut
    Ok c'est bon ça marche... Il manquait effectivement un espace, mais je faisais une autre erreur qui se situait au niveau de ma boucle (et donc générait une mauvaise requête...)

    Il fallait écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach my $tables_master (@tables){
    ...et non pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach my $tables_master ($tables){
    Merci pour ton aide et merci pour les cours pour apprendre le programmation Perl : http://perl.developpez.com/cours/ .

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

Discussions similaires

  1. [PDO] requête SQL avec une variable
    Par julienmop dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 09/06/2015, 11h27
  2. passer du texte + une requête sql dans une variable
    Par Giantrick dans le forum Langage
    Réponses: 3
    Dernier message: 18/04/2007, 18h15
  3. Comment stocker une requête sql dans une variable ?
    Par innova dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/10/2006, 10h01
  4. Requête selection avec une variable de date
    Par kahmsin dans le forum Access
    Réponses: 7
    Dernier message: 20/11/2005, 19h38
  5. Requête SQL avec une réponse unique
    Par Glutinus dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 16h35

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