ERREUR EN PHP catchable fatal error: Object of class stdClass
- Accueil
- Forum
- Programmation
- PHP
- ERREUR EN PHP catchable fatal error: Object of class stdClass
bykertix Le 27 mars 2016 à 03:24 (Édité le 25 janvier 2019 à 17:50)
L'erreur: Catchable fatal error: Object of class stdClass could not be converted to string in /home/cristalh/public_html/bykertix/nouveau_topic.php on line 20
Le Code:
<?php $Auth->allow('member'); ?>
<?php if($Auth->user('id')); ?>
<?php
$pdo = new PDO('mysql:dbname=c***;host=localhost', 'cr**', 'C***S');
/* Traitement du formulaire de création de Topic */
if(isset($_SESSION['Auth'])) {
if(isset($_POST['tsubmit'])) {
if(isset($_POST['tsujet'],$_POST['tcontenu'])) {
$sujet = htmlspecialchars($_POST['tsujet']);
$contenu = htmlspecialchars($_POST['tcontenu']);
if(!empty($sujet) AND !empty($contenu)) {
if(strlen($sujet) <= 70) {
if(isset($_POST['tmail'])) {
$notif_mail = 1;
} else {
$notif_mail = 0;
}
$ins = $pdo->prepare('INSERT INTO f_topics (id_createur, sujet, contenu, notif_createur, date_heure_creation) VALUES(?,?,?,?,NOW())');
$ins->execute(array($_SESSION['Auth'],$sujet,$contenu,$notif_mail));
} else {
$terror = "Votre sujet ne peut pas dépasser 70 caractères";
}
} else {
$terror = "Veuillez compléter tous les champs";
}
}
}
} else {
$terror = "Veuillez vous connecter pour poster un nouveau topic";
}
require('nouveau_topic.view.php'); /* Appel du fichier "vue" de notre page */
?>
PrimFX Le 27 mars 2016 à 03:46 (Édité le 1 janvier 1970 à 01:00)
Je pense que ton erreur vient de cette ligne:
$ins->execute(array($_SESSION['Auth'],$sujet,$contenu,$notif_mail));
On dirait qu'une de tes variables que tu fais passer en array() est un objet "stdClass" et non une string 😦 D'où l'erreur qui te dit que ton objet ne peut pas être converti en string :p bykertix Le 27 mars 2016 à 09:43 (Édité le 1 janvier 1970 à 01:00)
$_SESSION
? PrimFX Le 27 mars 2016 à 14:13 (Édité le 1 janvier 1970 à 01:00)
bykertix Le 27 mars 2016 à 15:02 (Édité le 1 janvier 1970 à 01:00)
array(4) { [0]=> object(stdClass)#1 (16) { ["id"]=> string(1) "1" ["username"]=> string(8) "ByKeRTiX" ["email"]=> string(23) "gog********" ["password"]=> string(60) "$2y$10$x***********PXhie" ["address"]=> string(9) "Fondateur" ["confirmation_token"]=> NULL ["confirmed_at"]=> string(4) "2015" ["remember_token"]=> NULL ["remember_at"]=> NULL ["reset_token"]=> string(60) "wHDlMrRccBos1UZReGo4SieNpeUnDLeS5ScQQpiv8NGOm90pj4p5BSN3AfxX" ["reset_at"]=> string(19) "2016-03-27 00:50:09" ["role_id"]=> string(1) "1" ["avatar"]=> string(0) "" ["name"]=> string(14) "Administrateur" ["slug"]=> string(5) "admin" ["level"]=> string(1) "2" } [1]=> string(3) "dfd" [2]=> string(4) "dffd" [3]=> int(0) } Catchable fatal error: Object of class stdClass could not be converted to string in /home/cristalh/public_html/bykertix/nouveau_topic.php on line 21
PrimFX Le 27 mars 2016 à 15:04 (Édité le 1 janvier 1970 à 01:00)
Je pense que le mieux serait de faire un var_dump de chaque variable que tu passes en paramètre séparément, sinon c'est galère de s'y retrouver :p
bykertix Le 27 mars 2016 à 15:09 (Édité le 1 janvier 1970 à 01:00)
var_dump(array($_SESSION['Auth'],$sujet,$contenu,$notif_mail));
PrimFX Le 27 mars 2016 à 15:12 (Édité le 1 janvier 1970 à 01:00)
var_dump($_SESSION['auth']);
var_dump($sujet);
var_dump($contenu);
var_dump($notif_mail);
bykertix Le 27 mars 2016 à 15:13 (Édité le 27 mars 2016 à 15:13)
sa me dit sa
bykertix Le 27 mars 2016 à 15:30 (Édité le 1 janvier 1970 à 01:00)
object(stdClass)#1 (16) { ["id"]=> string(1) "1" ["username"]=> string(8) "ByKeRTiX" ["email"]=> string(23) "gogob***mail.com" ["password"]=> string(60) "$2*******ie" ["address"]=> string(9) "Fondateur" ["confirmation_token"]=> NULL ["confirmed_at"]=> string(4) "2015" ["remember_token"]=> NULL ["remember_at"]=> NULL ["reset_token"]=> string(60) "wHDlMrRccBos1UZReGo4Si***v8NGOm90pj4p5BSN3AfxX" ["reset_at"]=> string(19) "2016-03-27 00:50:09" ["role_id"]=> string(1) "1" ["avatar"]=> string(0) "" ["name"]=> string(14) "Administrateur" ["slug"]=> string(5) "admin" ["level"]=> string(1) "2" } string(2) "tt" string(2) "tt" int(0)
bykertix Le 27 mars 2016 à 15:33 (Édité le 1 janvier 1970 à 01:00)
$ins->execute(array($_SESSION['Auth']->id,$sujet,$contenu,$notif_mail));
PrimFX Le 27 mars 2016 à 21:05 (Édité le 1 janvier 1970 à 01:00)
Tu vois, grâce aux var_dump() tu peux voir ce qui déconne, quelle variable n'est pas une string, ce qu'elles contiennent, ... :)
Bref, cool que tu ais trouvé solution à ton problème !
@+
MrFreeman Le 2 septembre 2020 à 13:44 (Édité le 1 janvier 1970 à 01:00)
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 :
//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;
J'ai fais comme ennoncé, 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.
Merci de votre aide