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

PHP & Base de données Discussion :

ma requête n'est pas executé avec un nom de table dynamique [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut ma requête n'est pas executé avec un nom de table dynamique
    Bonsoir à tous,

    J'ai besoin de faire une requete sur une table dont le nom à besoin d'être construit de façon dynamique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try{
    $table="temp_".$this->cust_id."";
    echo $table."<br>";
    $query_rsCommande ="SELECT * FROM ".$table." ORDER BY numClient";
    $rsCommande=$this->BDD2->query($query_rsCommande);
    }catch(PDOException $e){
    echo "ERREUR : ".$e->getMessage()."<br/>";
    };
    Dans ce cas $this->cust_id vaut 2.

    La requête ci dessus n'est pas executée, alors que si j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $table="temp_2";
    $query_rsCommande ="SELECT * FROM ".$table." ORDER BY numClient";
    ma requête est executée...

    Quelqu'un peut-il me dire ce qu'il faut faire ?

    Merci d'avance pour vos réponses.

  2. #2
    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
    Quelle erreur obtiens-tu ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Bonsoir sabotage,

    J'obtiens :

    Fatal error: Call to a member function fetch() on a non-object in /home/www/91a073c4f7cf4864457812bdd37c57/web/vad/class/maclasse.class.php on line 235
    et c'est tout, pas d'erreur levée par le catch

    mon : echo $table."<br>";

    Lui par contre renvoie bien : "temp_2"

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    Pardon voici le code complet pour voir la ligne qui génere l'erreur du dessus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    try{
    $table="temp_".$this->cust_id;
    echo $table."<br>";
    $query_rsCommande ="SELECT * FROM ".$table." ORDER BY numClient";
    $rsCommande=$this->BDD2->query($query_rsCommande);
    }catch(PDOException $e){
    echo "ERREUR : ".$e->getMessage()."<br/>";
    };
     
    while($row_rsCommande=$rsCommande->fetch(PDO::FETCH_ASSOC)) {
    $this->tabClient[$row_rsCommande['ID']]['IDProd']=$row_rsCommande['IDProd'];
    $this->tabClient[$row_rsCommande['ID']]['nom']=addslashes($row_rsCommande['nom']);
    $this->tabClient[$row_rsCommande['ID']]['prenom']=addslashes($row_rsCommande['prenom']);
    $this->tabClient[$row_rsCommande['ID']]['dateNaiss']=$row_rsCommande['dateNaiss'];
    $this->tabClient[$row_rsCommande['ID']]['dateDu']=$row_rsCommande['dateDu'];
    $this->tabClient[$row_rsCommande['ID']]['duree']=$row_rsCommande['duree'];
    $this->tabClient[$row_rsCommande['ID']]['tarif']=$row_rsCommande['tarif'];
    $this->tabClient[$row_rsCommande['ID']]['remise']=$row_rsCommande['remise'];
    $this->tabClient[$row_rsCommande['ID']]['numClient']=$row_rsCommande['numClient'];
     
    };

  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
    Essai en ajoutant au début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->BDD2->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    oui effectivement je pensais l'avoir mis mais j'avais ecrit :

    $this->BDD->setAttribute

    au lieu de :

    $this->BDD2->setAttribute
    Bref maintenant j'ai bien une erreur :

    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 '2 ORDER BY numClient' at line 6

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    530
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 530
    Points : 316
    Points
    316
    Par défaut
    j'ai trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $table="temp_".trim($this->cust_id);
    Je ne sais pas pourquoi la valeur $this->cust_id comporte un espace avant...

    ça fera l'objet de mon début de journée demain.

    Bonne soirée à tous et merci Sabotage pour ton aide

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

Discussions similaires

  1. Requête pour WMTS - IGN n'est pas executée
    Par ctlnPegas dans le forum IGN API Géoportail
    Réponses: 1
    Dernier message: 20/05/2014, 15h17
  2. prblm rtl100.bpl n'est pas trouve avec delphi 2007
    Par alateemo dans le forum Delphi
    Réponses: 1
    Dernier message: 27/06/2007, 00h04
  3. [AJAX] Javascript n'est pas exécuté avec ajax.
    Par John6281 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/02/2007, 14h35
  4. FORMS 10g - Le ON POPULATE DETAIL n'est pas executé
    Par lolafrite dans le forum Forms
    Réponses: 1
    Dernier message: 26/12/2006, 19h57
  5. Réponses: 10
    Dernier message: 30/11/2004, 10h12

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