banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oubliĂ© ?

#1 Fri 08 February 2019 14:39

mgiaume
Participant occasionnel
Lieu: Mérindol
Date d'inscription: 19 Apr 2013
Messages: 12

Fatal error: Call to a member function execute() on boolean

Bonjour,
je rencontre une erreur fatale lorsque j'exécute sous Wampserver avec php 5.6 mon code suivant:

html :

Code:

<form method="post" action="maj_perimetre.php" name="formSaisie" enctype="multipart/form-data"  onsubmit="return valider()" >    
            <input type="hidden" name="MAX_FILE_SIZE" value="80971520">    
            <input type="file" name="fichierdbf" id="fichierdbf" accept".dbf,.html">   
            <input type="submit" value="Envoyer" onclick="document.getElementById('divloading').innerHTML" ='chargement ...' name="submit">
        </form>

php:

Code:

<?php
//lecture du fichier dbf
    
    $dbf_path = $_FILES["fichierdbf"]["tmp_name"];
    $dbf=dbase_open($dbf_path, 0);
    
    $nom_champs=dbase_get_header_info($dbf);
    $nb_parcelles=dbase_numrecords($dbf);
    
    //connexion Ă  la base
    $dbh = new PDO('sqlite:donnees.sqlite');
    //on vide la base
    $query = 'DELETE FROM ROLE';    
    $dbh->query($query);
    
    //on y intÚgre les nouvelles données
    for ($i=0;$i<=$nb_parcelles;$i++){
    
        $stmt = $dbh->prepare("INSERT INTO ROLE (CLEF_2,SURFACE,SOUSCRITE,PROPRIO,PRO_ADR1,PRO_ADR2,PRO_CP,PRO_VILLE,NUM_PROPRI,COD_RESEAU,RESEAU,COD_ZONE,ZONE,COD_STATIO,STATION,COD_CULTUR,CULTURE,NUMERO,SECTION,COMMUNE,COD_TARIF,TARIF,NOM_ASP) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
        $parcelles=dbase_get_record_with_names($dbf,$i);        
        $stmt->execute(array($parcelles['CLEF_2'],
                            $parcelles['SURFACE'],
                            $parcelles['SOUSCRITE'],
                            $parcelles['PROPRIO'],
                            $parcelles['PRO_ADR1'],
                            $parcelles['PRO_ADR2'],
                            $parcelles['PRO_CP'],
                            $parcelles['PRO_VILLE'],
                            $parcelles['NUM_PROPRI'],
                            $parcelles['COD_RESEAU'],
                            $parcelles['RESEAU'],
                            $parcelles['COD_ZONE'],
                            $parcelles['ZONE'],
                            $parcelles['COD_STATIO'],
                            $parcelles['STATION'],
                            $parcelles['COD_CULTUR'],
                            $parcelles['CULTURE'],
                            $parcelles['NUMERO'],
                            $parcelles['SECTION'],
                            $parcelles['COMMUNE'],
                            $parcelles['COD_TARIF'],
                            $parcelles['TARIF'],
                            $parcelles['NOM_ASA']));
    }

    //on met Ă  jour la couche perimetre
    
    //on vide la base
    $query = 'DELETE FROM perimetre';
    $dbh->query($query);
    
    //on met a jour la table perimetre
    $req = $dbh->query("INSERT INTO PERIMETRE (Geometry,
                                                asa_id_parcelle,
                                                nom_asp,
                                                asa_droitdeau,
                                                asa_cod_reseau,
                                                asa_reseau,
                                                asa_num_adherent,
                                                asa_nom,
                                                asa_adresse,
                                                asa_adresse2,
                                                asa_commune,
                                                asa_cp,
                                                asa_cod_station,
                                                asa_station,
                                                asa_cod_tarif,
                                                asa_tarif,
                                                asa_cod_culture,
                                                asa_culture,
                                                idu,
                                                n_commune,
                                                n_section,
                                                n_parcelle,
                                                n_primitive,
                                                n_voirie_pa,
                                                surface_dgi,
                                                voirie_pa,
                                                emplacement,
                                                id_proprio,
                                                civilite,
                                                nom,
                                                prenom,
                                                mention_com,
                                                nom_complem,
                                                prenom_comp,
                                                date_naissa,
                                                lieu_naissa,
                                                pr_n_voirie,
                                                pr_r_voirie,
                                                pr_adresse,
                                                pr_compleme,
                                                pr_code_pos,
                                                pr_commune,
                                                date_acte,
                                                surface_cad)

                                                SELECT b.Geometry,
                                                        a.clef_2,
                                                        a.nom_asp,                                                        
                                                        a.souscrite,
                                                        a.cod_reseau,
                                                        a.reseau,
                                                        a.num_propri,
                                                        a.proprio,
                                                        a.pro_adr1,
                                                        a.pro_adr2,
                                                        a.pro_ville,
                                                        a.pro_cp,
                                                        a.cod_statio,
                                                        a.station,
                                                        a.cod_tarif,
                                                        a.tarif,
                                                        a.cod_cultur,
                                                        a.culture,
                                                        b.idu,
                                                        b.n_commune,
                                                        b.n_section,
                                                        b.n_parcelle,
                                                        b.n_primitiv,
                                                        b.n_voirie_p,
                                                        b.surface_dg,
                                                        b.voirie_pa,
                                                        b.emplacemen,
                                                        b.id_proprio,
                                                        b.civilite,
                                                        b.nom,
                                                        b.prenom,
                                                        b.mention_co,
                                                        b.nom_comple,
                                                        b.prenom_com,
                                                        b.date_naiss,
                                                        b.lieu_naiss,
                                                        b.pr_n_voiri,
                                                        b.pr_r_voiri,
                                                        b.pr_adresse,
                                                        b.pr_complem,
                                                        b.pr_code_po,
                                                        b.pr_commune,
                                                        b.date_acte,
                                                        b.surface_dg
                                                        
                                                    FROM role a
                                                    INNER JOIN cadastre b
                                                    ON substr (a.CLEF_2,0,13)= b.idu");
    

    echo("perimetre mis Ă  jour");
    dbase_close($dbf);
    ?>

Voici mon erreur : Fatal error: Call to a member function execute() on boolean in C:\wamp64\www\moulinette\maj_perimetre.php on line 67


Quelqu'un pourrait m'aider? Un grand merci Ă  vous !

Hors ligne

 

#2 Fri 08 February 2019 16:22

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1226

Re: Fatal error: Call to a member function execute() on boolean

Salut,

Une petite recherche sur internet avec "PDO+execute", nous renvoie
Ă  la documentation officielle : https://secure.php.net/manual/fr/pdosta … xecute.php

On y apprends que la fonction est membre du type PDOStatement. Étrange, le message d’erreur
nous dit pourtant que l'objet avec lequel on essaie d'appeler execute est  de type boolĂ©en.

La variable qui contient l'objet en question est appelée judicieusement $stmt, pour statement,
et initialisée par la valeur de retour de la fonction prepare(), à la ligne 65.

On va jeter un coup d'oeil dans la doc sur la fonction prepare :
https://secure.php.net/manual/fr/pdo.prepare.php

On y trouve un paragraphe intéressant :

Valeurs de retour

Si le serveur de base de donnĂ©es prĂ©pare avec succĂšs cette requĂȘte, PDO::prepare() retourne un objet PDOStatement. Si le serveur de base de donnĂ©es ne rĂ©ussit pas Ă  prĂ©parer la requĂȘte, PDO::prepare() retourne FALSE ou Ă©met une exception PDOException (suivant le gestionnaire des erreurs).


FALSE est de type booléen, on a trouvé le coupable, c'est l'appel à la fonction prepare ligne 65 qui n'arrive pas à créer
la requĂȘte prĂ©parĂ©e, et renvoie faux.

Reste donc Ă  savoir pourquoi !

Dernière modification par tumasgiu (Fri 08 February 2019 16:28)

Hors ligne

 

#3 Fri 08 February 2019 16:38

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 10053
Site web

Re: Fatal error: Call to a member function execute() on boolean

tumasgiu a écrit:

Reste donc Ă  savoir pourquoi !


Parce q ue la variable tmp_name est null donc le chemin temporaire vers le fchier est vide, impossible de l'ouvrir !

Y.


Yves Jacolin, bĂ©nĂ©vole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous dĂ©partage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#4 Fri 08 February 2019 17:09

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: Fatal error: Call to a member function execute() on boolean

Bonjour,

Rien Ă  voir avec le problĂšme mais dans le formulaire il manque un signe = Ă  accept".dbf,.html"

<input type="file" name="fichierdbf" id="fichierdbf" accept=".dbf,.html">

Dernière modification par michel56 (Fri 08 February 2019 17:48)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

#5 Fri 08 February 2019 17:32

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 10053
Site web

Re: Fatal error: Call to a member function execute() on boolean

michel56 a écrit:

Bonjour,

Rien Ă  voir avec le problĂšme mais dans le formulaire il manque un signe = Ă  accept".dbf,.html

<input type="file" name="fichierdbf" id="fichierdbf" accept=".dbf,.html">


La revue de code par ses pairs permet toujours d'améliorer et de consolider le code wink

Y.


Yves Jacolin, bĂ©nĂ©vole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous dĂ©partage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#6 Fri 08 February 2019 18:22

michel56
Participant assidu
Lieu: Lorient
Date d'inscription: 14 Jul 2012
Messages: 474

Re: Fatal error: Call to a member function execute() on boolean

Sur ton post précédent est-ce que ça fonctionnait avec cette modification:

$dbf=dbase_open('NOM_DE_TON_FICHIER_DBF', 0);

Dernière modification par michel56 (Fri 08 February 2019 19:56)


Opérateur cartographique & DAO & PHP.

Hors ligne

 

Pied de page des forums

Copyright Association GeoRezo