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 :

Pb instanciation $statement avec PDO sous PHP [PDO]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut Pb instanciation $statement avec PDO sous PHP
    Salut a tou(te)s !
    J'ajoute à ma surprenante collection de bugs incompris celui-ci:
    Jai developpe une fonction (declarée dans un fichier .inc) qui utilise une instance de PDO pour recuperer les infos que je souhaiterais afficher plus tard sur ma page.
    La fonction c'est:
    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
    function extractionInfosHeader() 
    {
    	set_exception_handler("exceptionHandler");
    	$db_2 = new PDO(BDD_CONNECTION, BDD_USER_NAME, BDD_PWD);
     
    	$sql = 'SELECT nom_ecran, desc_ecran, page_web, mots_cles, id_parent 
    				FROM Screen 
    				WHERE page_web = "header"';
     
    	$statement = $db_2->prepare($sql);
    	$statement->execute();      // << LIGNE QUI POSE LE PROBLEME
    	$tabl_result = $statement->fetch();
    	$statement->closeCursor();
     
    	$_ENV['page_web'] = $tabl_result['page_web'];
    	$_ENV['mots_cles'] = $tabl_result['mots_cles'];
    	$_ENV['id_parent'] = $tabl_result['id_parent'];
    	$db_2=null;
    }
    Et là c'est le drame: quant je test en local tout marche bien, MAIS quant je l'ai installé sur le serveur distant (de même config que le local), j'ai le message :
    Fatal error: Call to a member function execute() on a non-object in http://le bon chemin c sur on line 19
    Je cherche depuis un moment, sans comprendre pourquoi ce $statement pose problème.

    ps: c'est impoli je sais mais c'est une urgence j'ai comme un poids sur mes épaules depuis tout à l'heure. Merci bcp!!
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  2. #2
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Doc:

    If the database server successfully prepares the statement, PDO->prepare() returns a PDOStatement object. If the database server cannot successfully prepare the statement, PDO->prepare() returns FALSE.
    ca doit être ça le prob...
    Quant à savoir pourquoi il n'arrive pas à préparer...

    Tu as faits des var_dump() etc pour en savoir un peu plus ?

  3. #3
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut


    Ca pourrait aussi nous aider si tu précises quelle est la ligne 19...
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  4. #4
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    resultat des var_dump avant et apres mon petit bout de code:
    db=
    object(PDO)#1 (0) {
    }
    stmt_avant=
    bool(false)
    Fatal error: Call to a member function execute() on a non-object in http://lechemin/lib_php_sgbd.inc on line 33
    sur ce:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $sql = 'SELECT nom_ecran, desc_ecran, page_web, mots_cles, id_parent 
    				FROM Ecran 
    				WHERE page_web = "header"';
    	// TESTS
    	echo 'db=<pre>';
    	var_dump($db);
    	$statement = $db->prepare($sql);
    	// TESTS
    	echo 'stmt_avant=<pre>';
    	var_dump($statement);
     
    	$statement->execute();
    @jml94 :
    // << LIGNE QUI POSE LE PROBLEME
    tu veux que je te les numerote toutes
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  5. #5
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Non, merci.
    Si tu veux me faire un cadeau, je t'envoie mon adresse en MP et tu m'envoie des grosses lunettes, il semblerait que j'en ai besoin.

    Le prepare tombe bien en erreur, comme l'avait prédit goodpz.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  6. #6
    Membre éclairé Avatar de tigunn
    Homme Profil pro
    Développeur de bug
    Inscrit en
    Janvier 2003
    Messages
    608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de bug

    Informations forums :
    Inscription : Janvier 2003
    Messages : 608
    Points : 658
    Points
    658
    Par défaut
    Mes chers ami(e)s;
    j'ai le regret de vous informer qu'après avoir découvert l'explication du bug de sa fonction (qui n'était d'ailleurs pas totalement de lui), notre bien aimé Tigunn... a mis fin à ses jours.
    Il aurait avalé sa souris filaire sans la deconnecter, ce qui lui fut fatal.

    Bon je dis mon erreur : la requete SQL qui était fausse (mauvais champs, ...)
    Mais c'est pas vrai: vous vous dites. Ah si la honte pouvait tuer je me serais déjà enterré tout seul.

    Enfin, afin de pas clore tout de suite mon déhonneur publique (sisi): est-ce quelqu'un peut m'expliquer pourquoi en local cette fonction n'a jamais bronchée (j'avais pas vu qu'il n'y avait pas de retour ok ) alors que sur le serveur aucun message d'erreur n'est retourné a part le "execute() ... non-object...(voir plus haut)" ?
    Je pensais qu'en définissant : set_exception_handler("exceptionHandler"); avant la création de l'instance PDO ca permettait d'afficher les msg d'erreurs.
    Bon, à force, faut que je me méfie: Je pourrais devenir intelligent.
    Le monde se divise en deux: ceux qui utilisent le tag et les autres.

  7. #7
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par tigunn
    Bon, à force, faut que je me méfie: Je pourrais devenir intelligent.
    T'inquiètes pas, je croyais que ça m'arriverais aussi, et puis non...
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

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

Discussions similaires

  1. Génération d'image avec Graphviz sous php
    Par uboy04 dans le forum Langage
    Réponses: 1
    Dernier message: 29/05/2014, 21h49
  2. [PDO] Syntaxe avec PDO et php
    Par devalender dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 30/12/2013, 17h01
  3. lecture fichier html avec image sous php
    Par qmike dans le forum Langage
    Réponses: 4
    Dernier message: 28/07/2010, 11h39
  4. création d'une signature avec ECDSA sous PHP
    Par subvitamine dans le forum Langage
    Réponses: 0
    Dernier message: 15/04/2010, 12h57
  5. Probleme avec l'objet PDO en PHP
    Par krovomi dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 03/05/2006, 12h18

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