Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/06/2006, 18h08   #1
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
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 :
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 :
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.
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 09h40   #2
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
S'il vous plaît...
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 09h50   #3
Membre expérimenté
 
Inscription : octobre 2004
Messages : 872
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 872
Points : 582
Points : 582
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
jeff_! est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 10h49   #4
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
As tu essayer de mettre les parenthese a l'interieur de ta varialbe ?
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 10h51   #5
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
un autre truc bizarre.
dans la requete qui fonctionne tu utilise $tagVue alors que dans ton premier exemple tu utilise $xml->tagVue.
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 11h53   #6
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
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.
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 11h56   #7
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
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à...
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 12h21   #8
Membre chevronné
 
Avatar de stunti
 
Inscription : mai 2006
Messages : 521
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : mai 2006
Messages : 521
Points : 602
Points : 602
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
__________________
If it's not broken, don't fix it.
BiliBa Built on top of Zend Framework
stunti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 15h14   #9
Membre du Club
 
Développeur Web
Inscription : décembre 2005
Messages : 110
Détails du profil
Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2005
Messages : 110
Points : 45
Points : 45
Ca aussi j'ai déjà essayé... Ca déclenchait une erreur aussi
fadeninev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2006, 15h36   #10
Membre expérimenté
 
Inscription : octobre 2004
Messages : 872
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 872
Points : 582
Points : 582
est ce que ceci fonctionne
Code :
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 );
}
jeff_! est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h29.


 
 
 
 
Partenaires

Hébergement Web