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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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: 1159

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: 9869
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: 9869
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

Powered by FluxBB