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 :

[SQL] [php] PDO - fonction BindParam


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 110
    Par défaut [SQL] [php] PDO - fonction BindParam
    Bonjour

    J'aimerai comprendre pourquoi le code ci-dessous me renvoie un résultat vide (la variable $recordsShadow contient un array vide, donc la requête ne renvoie rien !). Les 2 paramètres valorisés dans bindParam contiennent bien quelquechose...

    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
     
    $pdo = PDOCreator::getPDO($shadowcfg['bdd_dsn'], $shadowcfg['bdd_login'], $shadowcfg['bdd_password']);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    $stmt = $pdo->prepare('select * from shadow_vues sv '
         	       .'left join shadow_colonnes sc on sv.id_vues = sc.id_vues '
           	       .'where sv.vues_tag = :tagVue '
           	       .'and sc.colonnes_tag in (:tagColonnes)');
    $stmt->bindParam(':tagVue', $xml->tagVue);
    $stmt->bindParam(':tagColonnes', $sql_tagColonnes);
    if ($stmt->execute() === false) {
        var_dump($stmt->errorInfo());
    }
     
    $recordsShadow = $stmt->fetchAll();
    $sql_tagColonnes contient la chaîne :
    " 'tag_col4', 'tag_col3', 'tag_col2', 'tag_col1' ".
    Je me disais que c'était peut-être les quotes qui posaient problèmes dans le bindParam().

    Il faut savoir que ça marche parfaitement quand je fais comme ci-dessous au lieu d'utiliser prepare() (idem quand je tape directement la requête dans ma base de données)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $stmt = $pdo->query('select * from shadow_vues sv left join shadow_colonnes sc on sv.id_vues = sc.id_vues where sv.vues_tag=\''.$tagVue .'\'and sc.colonnes_tag in ('.$sql_tagColonnes.')');
    Merci

    Cécilia.

  2. #2
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 110
    Par défaut
    S'il vous plaît...

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    salut
    je ne suis pas sur que tu peut utilisé les requetes preparés comme cela
    il faut que tu decompose ton $sql_tagColonnes en quatre parametres

  4. #4
    Membre émérite Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Par défaut
    As tu essayer de mettre les parenthese a l'interieur de ta varialbe ?

  5. #5
    Membre émérite Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Par défaut
    un autre truc bizarre.
    dans la requete qui fonctionne tu utilise $tagVue alors que dans ton premier exemple tu utilise $xml->tagVue.

  6. #6
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 110
    Par défaut
    Oui oui j'utilise $tagVue qui contient $xml->tagVue. J'avais essayé de faire pareil dans ma requête préparée mais ça ne fonctionnait pas !

    Je vais essayer de mettre les parenthèses à l'intérieur de ma variable.

  7. #7
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 110
    Par défaut
    Ca ne marche pas non plus, ça me renvoie une erreur : incorrect syntax near 'in' .

    Merci quand même à vous 2 ! Je vais utiliser query et puis voilà...

  8. #8
    Membre émérite Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Par défaut
    sinon tu mets chacun de tes tag_col dans un tableau et tu parcours ton tableau oiur faire tes bind.
    tu fais pareil pour construire la requete

  9. #9
    Membre confirmé
    Profil pro
    Développeur Web
    Inscrit en
    Décembre 2005
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2005
    Messages : 110
    Par défaut
    Ca aussi j'ai déjà essayé... Ca déclenchait une erreur aussi

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Par défaut
    est ce que ceci fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    $tagColonnes = array('tag_col4', 'tag_col3', 'tag_col2', 'tag_col1');
    $stmt = $pdo->prepare('select * from shadow_vues sv '
         	       .'left join shadow_colonnes sc on sv.id_vues = sc.id_vues '
           	       .'where sv.vues_tag = :tagVue '
           	       .'and sc.colonnes_tag in (:tagColonnes1,
    :tagColonnes2,:tagColonnes3,:tagColonnes4)');
    foreach($tagColonnes  as $key=>$val){
    $stmt->bindParam(':tagColonnes'.$key+1, $val , PDO::PARAM_STR );
    }

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

Discussions similaires

  1. [MySQL] PHP PDO erreur lors de l'appel de fonction
    Par devocx dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 04/07/2011, 11h57
  2. erreur dans une requête sql dans une fonction php
    Par frboyer dans le forum Langage
    Réponses: 3
    Dernier message: 07/04/2009, 13h37
  3. [SQL] Résultat de fonction php non valide dans requête SQL
    Par darksnake dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/12/2007, 13h44
  4. [SQL] php et recuperation d'une valeur renvoyée par une fonction sql
    Par highman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/06/2006, 15h42
  5. [MySQL] Fonctions calculs SQL/PHP pour projet football
    Par spamyx dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 25/04/2006, 16h16

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