Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PDO
PDO Forum d'entraide sur PDO (PHP Data Objects) : pilote générique de bases de données avec PHP. Avant de poster -> FAQ PDO et Cours PDO
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 16/04/2007, 10h04   #1
Invité de passage
 
Inscription : janvier 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 12
Points : 4
Points : 4
Par défaut Problème avec les liaisons de paramètres

Je suis légèrement dubitatif.

J'utilise les requêtes préparées de PDO, mais mes résultats diffèrent selon la méthodes. Si j'écris :

Code :
1
2
3
4
5
 
$sql = 'SELECT count(*) FROM  ?  WHERE ? = ? ';
$Stmt = $BD->prepare($sql);
$Stmt->execute( array(  'FomascPieces', 'numero', 1 ) );
$row = $Stmt->fetch();
J'obtiens $row[0] = 0

Par contre, Si j'écris :

Code :
1
2
3
4
5
6
7
 
$sql = 'SELECT count(*) 
        FROM  FomascPieces
        WHERE numero = 1';
$Stmt = $BD->prepare($sql);
$Stmt->execute();
$row = $Stmt->fetch();
j'ai $row[0] = 1

Ça laisse perplexe. Quelqu'un aurait une idée du Problème ????

Note: Avec bindParam, j'ai la même chose, et même problème en utilisant les paramètres nommés ( :table :exemple :etc ) en lieu et place des points d'interrogations.
evaisse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 13h46   #2
Membre éclairé
 
Inscription : juillet 2003
Messages : 338
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 338
Points : 339
Points : 339
Cela vient peut être du type numero, la question est: est-ce que le type de ta donnée renvoyée par execute est le même que ton type de champ numero du SGBD?
tatareau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 14h11   #3
Fabouney
Invité(e)
 
Messages : n/a
Détails du profil
Informations forums :
Messages : n/a
Points : 0
Salut,

je crois qu'il n'est pas possible de passer un "param" pour le nom des tables avec PDO.

Cordialement.
  Envoyer un message privé Réponse avec citation 00
Vieux 17/04/2007, 14h17   #4
Invité de passage
 
Inscription : janvier 2006
Messages : 12
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 12
Points : 4
Points : 4
Exactement :
Citation:
ne pas utiliser de placeholder avec des identifiants (de table/champ), ce qui est logique vu que le plan de la requête ne sera pas le même selon la table/champ, donc dans ce cas la préparation de la requête n'a pas de sens.
J'aurais du faire :
Code :
1
2
3
4
5
 
$sql = 'SELECT count(*) FROM  FomascPieces  WHERE numero = ? ';
$Stmt = $BD->prepare($sql);
$Stmt->execute( array( 1 ) );
$row = $Stmt->fetch();
Voilà, problème résolu.
evaisse 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 02h45.


 
 
 
 
Partenaires

Hébergement Web