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

Langage PHP Discussion :

variable dans une requête sql


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut variable dans une requête sql
    Bonjour à tous,

    J'essaye de faire une requête en mettant à la place du nom de champ une variable. Ça devrait pas si compliqué pourtant… Et pourtant je m'arrache les cheveux depuis plusieurs heures…
    J'ai relu en long en large le cours sur l'utilisation apostrophe/guillemets et puis j'ai testé toutes les possibilités (bêtement mais je ne voyais plus quoi faire :-), successivement, comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM $table1"); //NON
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM \"$table1\""); //NON
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM"." ".$table1); //NON
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM ".$table1); //NON
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM {$table1}"); //NON
     
    $reponse = $bdd->query('SELECT idRubriqueTuto FROM $table1'); // NON
    $reponse = $bdd->query('SELECT idRubriqueTuto FROM "$table1"'); // NON
    $reponse = $bdd->query('SELECT idRubriqueTuto FROM \"$table1\"'); // NON
    $reponse = $bdd->query('SELECT idRubriqueTuto FROM '.$table1); // NON
    Mais rien n'y fait. Je précise que quand je met direct le nom du champ de ma table, ça fonctionne.

    Au secours !
    Ça viendrait donc pas d'un problème de syntaxe ?

    Merci par avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut
    Les variables PHP sont entre cotes dans les requêtes .. me semble pas avoir vu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM '$table1'");
    ou alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM '".$table1."'");
    L dernière solution est plus propre ...

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    As-tu simplement verifié ce que valait $table1 et quelle erreur provoquait ta requête precisemment ?

    Sinon pour les syntaxes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM $table1"); // correct
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM \"$table1\""); // incorrect, il n'y a pas de guillemet autour des noms de table
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM"." ".$table1); // correct mais inutile
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM ".$table1); // correct
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM {$table1}"); //correct mais inutile
     
    $reponse = $bdd->query('SELECT idRubriqueTuto FROM $table1'); // incorrect : les variables ne sont pas interpretées entre guillemets simples
    $reponse = $bdd->query('SELECT idRubriqueTuto FROM "$table1"'); // idem
    $reponse = $bdd->query('SELECT idRubriqueTuto FROM \"$table1\"'); // idem
    $reponse = $bdd->query('SELECT idRubriqueTuto FROM '.$table1); // correct

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Tout d'abord, merci pour vos réponses.

    Sabotage, pour cette requête-ci, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM ".$table1); // correct
    J'ai comme message d'erreur que la variable n'existe pas.
    J'ai fait un echo sur cette variable, en effet, elle n'est pas vue.

    La requête se trouve dans un bloc try, qui lui-même se trouve dans une fonction.
    La variable $table1 est définie à l'extérieur de cette fonction, au même niveau que l'appel de fonction (avant pour être précise).

    Je pensais qu'elle serait visible de partout vu qu'elle ne se trouve pas dans un bloc d'instruction. Non ?

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Les fonctions n'ont pas les mêmes variables que le script.
    Il faut passer la variable en argument, la déclarer global ou utiliser une constante.

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ah non, je me suis trompée,
    le renvoi "la variable n'existe pas" vient d'un echo que je fais plus haut pour vérifier la présence d'une autre variable.

    Le message d'erreur est le suivant :
    Erreur : SQLSTATE[42000]: Syntax error or access violation: 1064 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

    Toujours pour cette requête là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM ".$table1);
    Ceci dit, il est toujours vrai que la variable n'est pas vue dans le bloc d'instruction.
    J'essaye avec global mais le premier problème de syntaxe n'est pas résolut.

    Dur dur

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    J'ai déjà répondu ta syntaxe est bonne mais si $table1 ne vaut rien, la requête ne peut évidemment pas fonctionner.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Alors voilà, ça marche.
    A l'intérieur du groupe d'instruction try, soit au même endroit que ma requête, j'ai mis
    et ma requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM $table1");
    J'avais essayé de mettre directement global dans la requête, comme l'une ou l'autre des lignes ci-dessous mais ça ne lui plait pas (pas de message d'erreur, rien, une page blanche). J'avoue que je ne comprend trop pourquoi. J'ai beau relire les cours, j'ai du mal avec la syntaxe…:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM global $table1");
     
    $reponse = $bdd->query("SELECT idRubriqueTuto FROM ".global. " " .$table1);
    Bref, ça marche maintenant…
    Merci beaucoup pour votre aide !

  9. #9
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    "global" est un mot clef, il ne peut pas être traité dans une chaine de caractère.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    ah… ok!
    Je vais arrêter de maltraiter global
    Mais il me le rend bien.

    Merci pour ces éclaircissements.

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

Discussions similaires

  1. Comment utiliser des variables dans une requête SQL ?
    Par Ragnarok85 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 12/02/2007, 17h23
  2. [MySQL] Réutiliser une variable dans une requête SQL
    Par marlozo dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 30/12/2006, 09h52
  3. [SQL] Utilisation de variables dans une requête SQL
    Par heteroclite dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 07/09/2006, 23h38
  4. Passer une variable dans une requête SQL
    Par Remedy dans le forum C++
    Réponses: 2
    Dernier message: 11/05/2006, 17h48
  5. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 19h02

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