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 :

Problème avec les liaisons de paramètres [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 11
    Points
    11
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    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?

  3. #3
    Fabouney
    Invité(e)
    Par défaut
    Salut,

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

    Cordialement.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 12
    Points : 11
    Points
    11
    Par défaut
    Exactement :
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

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

Discussions similaires

  1. [WD17] Problème avec les liaisons fichiers
    Par Dawlon dans le forum WinDev
    Réponses: 3
    Dernier message: 13/11/2012, 13h49
  2. [VB.net] Problème avec les paramètres d'un update
    Par dolyne.b dans le forum Accès aux données
    Réponses: 5
    Dernier message: 16/05/2007, 17h00
  3. [Débutant] Problème avec les paramètres d'une proc stockée
    Par babulior dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2005, 15h38
  4. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09
  5. Réponses: 6
    Dernier message: 28/05/2004, 09h39

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