Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Invité régulier
    Inscrit en
    janvier 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 13
    Points : 6
    Points
    6

    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 :
    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 :
    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
    16 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 580
    Points : 465 305
    Points
    465 305

    Par défaut

    Code :
    'SELECT id FROM' .$tables_master
    Il manque un espace après le FROM, du coup ta requête SQL est incorrect.

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  3. #3
    Invité régulier
    Inscrit en
    janvier 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 13
    Points : 6
    Points
    6

    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
    16 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : avril 2004
    Messages : 16 580
    Points : 465 305
    Points
    465 305

    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 :
    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;

    Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !

  5. #5
    Invité régulier
    Inscrit en
    janvier 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : janvier 2005
    Messages : 13
    Points : 6
    Points
    6

    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 :
    foreach my $tables_master (@tables){
    ...et non pas

    Code :
    foreach my $tables_master ($tables){
    Merci pour ton aide.

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •