Erreur "Notice : Array to string conversion in..."
Résolu
Nenatio
-
Nenatio -
Nenatio -
Bonjour !
J'ai besoin de votre aide car je suis bloqué sur un problème que je n'arrive pas à résoudre.
Je tombe sur ce code erreur : "Notice : Array to string conversion in...".
Après quelques recherches sur cette erreur, je n'ai toujours pas trouvé de moyen de la résoudre.
Voici le morceau de code contenant l'erreur :
L'erreur se trouverait sur la ligne suivante :
Je précise que certaines variables sont définies plus haut.
Merci d'avance pour votre aide !
J'ai besoin de votre aide car je suis bloqué sur un problème que je n'arrive pas à résoudre.
Je tombe sur ce code erreur : "Notice : Array to string conversion in...".
Après quelques recherches sur cette erreur, je n'ai toujours pas trouvé de moyen de la résoudre.
Voici le morceau de code contenant l'erreur :
if ($_POST['mot_de_passe']==$_POST['mot_passe_verif'])
{
$mot_de_passe=password_hash($_POST['mot_de_passe'], PASSWORD_DEFAULT);
$hachage=true;
$portefeuille=0;
$victoires=0;
$statut=0;
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$pseudo=$_POST['pseudo'];
$req = $bdd->prepare('INSERT INTO utilisateur(nom, prenom, pseudo, mot_de_passe, courriel, date_naissance, statut, portefeuille, victoires) VALUES(:nom, :prenom, :pseudo, :mot_de_passe, :courriel, :date_naissance, :statut, :portefeuille, :victoires)');
$req->execute(array(
'nom' => $nom,
'prenom' => $prenom,
'pseudo' => $pseudo,
'mot_de_passe' => $mot_de_passe,
'courriel' => $courriel,
'date_naissance' => $date_naissance,
'statut' => $statut,
'portefeuille' => $portefeuille,
'victoires' => $victoires
));
echo 'Ajout du membre effectué!';
}
else
{
$erreur="Les mots de passe saisis sont différents";
$hachage=false;
}
L'erreur se trouverait sur la ligne suivante :
'victoires' => $victoires
Je précise que certaines variables sont définies plus haut.
Merci d'avance pour votre aide !
3 réponses
-
Bonjour,
Fais un var_dump de tes différentes variables
NB: Vu que tu fais du PDO, pense à gérer correctement les erreurs.
Applique ce qui est indiqué ici : https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Tu peux aussi suivre les consignes données ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
-
Re-bonjour,
Après avoir appliqué ce que tu m'as indiqué, je constate l'apparition de lignes inattendues sur ma page :C:\wamp64\www\mabase\traitement\t-accountcreate.php:91:string 'Dupont' (length=6)
C:\wamp64\www\mabase\traitement\t-accountcreate.php:92:string 'Jean' (length=4)
C:\wamp64\www\mabase\traitement\t-accountcreate.php:93:string 'jdupont' (length=7)
C:\wamp64\www\mabase\traitement\t-accountcreate.php:94:string '$2y$10$tQnwCVGZFqFZv8ILWUy9d.mgxYwBk2ltDVjflhIUCikJFRRX7Zwyu' (length=60)
C:\wamp64\www\mabase\traitement\t-accountcreate.php:95:string '***@***' (length=21)
C:\wamp64\www\mabase\traitement\t-accountcreate.php:96:
array (size=12)
'year' => int 1970
'month' => int 12
'day' => int 12
'hour' => boolean false
'minute' => boolean false
'second' => boolean false
'fraction' => boolean false
'warning_count' => int 0
'warnings' =>
array (size=0)
empty
'error_count' => int 0
'errors' =>
array (size=0)
empty
'is_localtime' => boolean false
C:\wamp64\www\mabase\traitement\t-accountcreate.php:97:int 0
C:\wamp64\www\mabase\traitement\t-accountcreate.php:98:int 0
C:\wamp64\www\mabase\traitement\t-accountcreate.php:99:int 0
Ajout du membre effectué!
Et lorsque je regarde dans phpmyadmin, le membre n'est pas enregistré dans la table.
-
-
Excuse-moi, je n'ai pas fait attention. Le voici corrigé :
if ($_POST['mot_de_passe']==$_POST['mot_passe_verif']) { $mot_de_passe=password_hash($_POST['mot_de_passe'], PASSWORD_DEFAULT); $hachage=true; $portefeuille=0; $victoires=0; $statut=0; $nom=$_POST['nom']; $prenom=$_POST['prenom']; $pseudo=$_POST['pseudo']; $req = $bdd->prepare('INSERT INTO utilisateur(nom, prenom, pseudo, mot_de_passe, courriel, date_naissance, statut, portefeuille, victoires) VALUES(:nom, :prenom, :pseudo, :mot_de_passe, :courriel, :date_naissance, :statut, :portefeuille, :victoires)'); $req->execute(array( 'nom' => var_dump($nom), 'prenom' => var_dump($prenom), 'pseudo' => var_dump($pseudo), 'mot_de_passe' => var_dump($mot_de_passe), 'courriel' => var_dump($courriel), 'date_naissance' => var_dump($date_naissance), 'statut' => var_dump($statut), 'portefeuille' => var_dump($portefeuille), 'victoires' => var_dump($victoires) )); echo 'Ajout du membre effectué!'; } else { $erreur="Les mots de passe saisis sont différents"; $hachage=false; }
La ligne 96 correspond à la ligne suivante :'date_naissance' => var_dump($date_naissance),
-
oulaaaaa.....
Alors les var_dump ce n'est pas pour "corriger" quoi que ce soit.....
C'est pour débuguer pour essayer de comprendre où se trouve ton erreur !
Il faut remettre ton code comme il était avant et AJOUT des var_dump des variables à côté !
if ($_POST['mot_de_passe']==$_POST['mot_passe_verif']) { $mot_de_passe=password_hash($_POST['mot_de_passe'], PASSWORD_DEFAULT); $hachage=true; $portefeuille=0; $victoires=0; $statut=0; $nom=$_POST['nom']; $prenom=$_POST['prenom']; $pseudo=$_POST['pseudo']; $datas = array( ':nom' => $nom, ':prenom' => $prenom, ':pseudo' => $pseudo, ':mot_de_passe' => $mot_de_passe, ':courriel' => $courriel, ':date_naissance' => $date_naissance, ':statut' => $statut, ':portefeuille' => $portefeuille, ':victoires' => $victoires ); $sql = 'INSERT INTO utilisateur(nom, prenom, pseudo, mot_de_passe, courriel, date_naissance, statut, portefeuille, victoires) VALUES(:nom, :prenom, :pseudo, :mot_de_passe, :courriel, :date_naissance, :statut, :portefeuille, :victoires)'; var_dump($nom); var_dump($prenom); var_dump($pseudo); var_dump($mot_de_passe); var_dump($courriel); var_dump($date_naissance); var_dump($statut); var_dump($portefeuille); var_dump($victoires); try{ $req = $bdd->prepare($sql); $req->execute($datas); echo 'Ajout du membre effectué!'; }catch(Exception $e){ echo " Erreur " . $e->getMessage(); } } else { $erreur="Les mots de passe saisis sont différents"; $hachage=false; }
-
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, c'est la variable $date_naissance qui pose problème. comment l'as-tu définie?
quel est le type du champ date_naissance dans la base de données?-
Bonjour !
Ma variable $date_naissance est définie dans ma base sous la forme DATE, à la différence des autres champs qui sont aux formats TEXT, VAR ou encore INT. Le problème est-il donc ce format qui doit être modifié ?- Disons que j'ai réalisé quelque chose qui je pense n'était pas du tout optimisé. En fait, j'avais placé dans ma variable $date_naissance le contenu d'un input. De ce fait (je pense), le format était différent, ce qui a conduit à cette erreur.
Après avoir tout corrigé, tout semble correct et fonctionnel.
Je te remercie grandement ainsi que @jordane45 pour votre patience car c'était pas gagné ;).
Merci encore et bonne continuation !
-