Pages: 1
- Sujet précédent - Fatal error: Call to a member function execute() on boolean - Sujet suivant
#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
Re: Fatal error: Call to a member function execute() on boolean
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
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">
La revue de code par ses pairs permet toujours d'améliorer et de consolider le code
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
Pages: 1
- Sujet précédent - Fatal error: Call to a member function execute() on boolean - Sujet suivant