erreur lors d'une insertion sql : Recoverable fatal error: Object of class PDOStatement could not be converted to string

MrFreeman

MrFreeman Le 2 septembre 2020 à 13:51

Bonjour, Je me permets de vous contacter, j'ai actuellement un problème similaire, lorsque je veux faire une insertion dans une table contenant des int, float, string.

Le Code :

    include 'menu.php';

    if(isset($_POST['dossier']))      
    {   $dossier=$_POST['dossier']; }
    else
    {   $dossier="";    }

    if(isset($_POST['biens']))      
    {   $biens=$_POST['biens']; }
    else
    {   $biens="";  }

    if(isset ($_POST['prio1']))      
    {   $prio=$_POST['prio1'];  }
    else
    {   $prio="";   }

    if(isset ($_POST['caracbien']))      
    {   $produit=$_POST['caracbien'];   }
    else
    {   $produit="";    }

    if(isset ($_POST['valachat']))      
    {   $valachat=$_POST['valachat'];   }
    else
    {   $valachat="";   }

    if(isset ($_POST['tva']))      
    {   $tva=$_POST['tva']; }
    else
    {   $tva="";    }

    if(isset ($_POST['dateachat']))      
    {   $dateachat=$_POST['dateachat']; }
    else
    {   $dateachat="";  }

    if(isset ($_POST['remplacement']))      
    {   $remplacement=$_POST['remplacement'];   }
    else
    {   $remplacement="";   }

    if(isset ($_POST['prestataire']))      
    {   $prestataire=$_POST['prestataire']; }
    else
    {   $prestataire="";    }

    if(isset ($_POST['commtech']))      
    {   $commtech=$_POST['commtech'];   }
    else
    {   $commtech="";   }

    if(isset ($_POST['causesin']))      
    {   $causesin=$_POST['causesin'];   }
    else
    {   $causesin="";   }

    if(isset ($_POST['conclusion']))      
    {   $conclusion=$_POST['conclusion'];   }
    else
    {   $conclusion=""; }

    if(isset ($_POST['reclarep']))      
    {   $reclarep=$_POST['reclarep'];   }
    else
    {   $reclarep="";   }

    if(isset ($_POST['reclaremp']))      
    {   $reclaremp=$_POST['reclaremp']; }
    else
    {   $reclaremp="";  }

    if(isset ($_POST['reppre']))      
    {   $reppre=$_POST['reppre'];   }
    else
    {   $reppre=""; }

    if(isset ($_POST['remppre']))      
    {   $remppre=$_POST['remppre']; }
    else
    {   $remplapre="";  }

$idbi = $db -> prepare("SELECT MAX(idbien) FROM biens");
$idbi->execute();
$idbien=$idbi->fetch();
$idbie=$idbien[0];
$idbiens=$idbie+1;

$toto = strval($idbiens);

$idut = $db -> prepare("SELECT idutilisateur FROM demande WHERE iddemande = :iddemande ");
$idut->execute([':iddemande' => $dossier]);
$idutil=$idut->fetch();
$idutilisateur=$idutil[0];

$idprestataire = $db ->prepare("SELECT identreprise FROM entreprise WHERE nomentreprise = :prestataire");
$idprestataire->execute([':prestataire' => $prestataire]);
$idpresta=$idprestataire->fetch();
$idprestataire=$idpresta[0];

$idsinistre = $db ->prepare("SELECT idsinistre FROM demande WHERE iddemande = :iddemande");
$idsinistre->execute([':iddemande' => $dossier]);
$idsin=$idsinistre->fetch();
$idsinistre=$idsin[0];

$idclient = $db ->prepare("SELECT idclient FROM demande WHERE iddemande = :iddemande");
$idclient->execute([':iddemande' => $dossier]);
$idcli=$idclient->fetch();
$idclient=$idcli[0];

echo "$idclient";

?>
<main>
    <h1>Nouveau Bien</h1>

        Type de bien : <?php echo $biens;?>
        <br>
        Priorite : <?php echo $prio;?>
        <br>
        Produit : <?php echo $produit;?>   
        <br>
        Valeur Achat : <?php echo $valachat;?> €
        <br>
        TVA : <?php echo $tva;?> %
        <br>
        Date Achat : <?php echo $dateachat;?>
        <br>
        Remplacement : <?php echo $remplacement;?>
        <br>
        Prestataire : <?php echo $prestataire?>
        <br>
        Commentaire : <?php echo $commtech;?>
        <br>
        Cause : <?php echo $causesin;?>
        <br>
        Conclusion : <?php echo $conclusion;?>
        <br>
        Recla Rép : <?php echo $reclarep;?> €
        <br>
        Recla Remp : <?php echo $reclaremp;?> €
        <br>
        Rep Presta : <?php echo $reppre;?> €
        <br>
        Remp Presta : <?php echo $remppre;?> €
</main>

<?php
//INSERTION du BIEN
$bieninsert=$db->prepare('INSERT INTO biens (idbien, iddemande, idsinistre, idartisan, idclient, idutilisateur, typebien, priorite, caracteristique, valeurachat, tva, dateachat, remplacement, prestataire, comtech, causesinistre, conclusion, reclarep, reclaremp, reppresta, remppresta) VALUES (:idbien, :iddemande, :idsinistre, :idartisan, :idclient, :idutilisateur, :typebien, :priorite, :caracteristique, :valeurachat, :tva, :dateachat, :remplacement, :prestataire, :comtech, :causesinistre, :conclusion, :reclarep, :reclaremp, :reppresta, :remppresta)');
$bieninsert->execute([':idbien' => $toto, ':iddemande' => $dossier, ':idsinistre' => $idsinistre, ':idartisan' => $idprestataire, ':idclient' => $idclient, ':idutilisateur' => $idutilisateur, ':typebien' => $biens, ':priorite' => $prio, ':caracteristique' => $produit, ':valeurachat' => $valachat, ':tva' => $tva, ':dateachat' => $dateachat, ':remplacement' => $remplacement, ':prestataire' => $prestataire, ':comtech' => $commtech, ':causesinistre' => $causesin,':conclusion' => $conclusion, ':reclarep' => $reclarep, ':reclaremp' => $reclaremp, ':reppresta' => $reppre, ':remppresta' => $remppre]);

var_dump ($toto);
var_dump ($dossier);
var_dump ($idsinistre);
var_dump ($idprestataire);
var_dump ($idclient);
var_dump ($idutilisateur);
var_dump ($biens);
var_dump ($prio);
var_dump ($produit);
var_dump ($valachat);
var_dump ($tva);
var_dump ($dateachat);
var_dump ($remplacement);
var_dump ($prestataire);
var_dump ($commtech);
var_dump ($causesin);
var_dump ($conclusion);
var_dump ($reclarep);
var_dump ($reclaremp);
var_dump ($reppre);
var_dump ($remppre);

var_dump($bieninsert);
echo $bieninsert;

?>
<br>
<center>Le bien à été inséré</center>
<br>
<center><input type="submit" name="Submit" value="Fermer la fen&ecirc;tre" onClick="window.close()"></center>
<?php
}
?>

J'ai fais des var_dump sur la requete et sur chaque variable, tout les var dump me retourne des string, sauf le idbien, mais je le convertit et apres il me retourne un string , serait ce du à un nom de champs ou au type de champs.

Dans ma table les id sont des int, les montants sont des float, le reste est en varchar.

Ce que je ne comprends pas c'est que dans d'autre table de ma base, j'insere des données via formulaire sans souci.

Merci de votre aide

Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte