Erreur : Integrity constraint
Résolu
Lucryio
Messages postés
206
Date d'inscription
Statut
Membre
Dernière intervention
-
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 38486 Date d'inscription Statut Modérateur Dernière intervention -
Bonsoir à tous et à toutes,
Je viens vers vous pour une erreur que j'ai jamais croisé :
Voici mon code qui pose problème :
Voici le formulaire auquel il se rapporte :
Je ne suis jamais tombé sur cette erreur et je ne vois pas du tous ou se trouve l'erreur dans ce code donc si quelqu'un pouvait éclairer ma lanterne se serais vraiment généreux de sa part.
Merci par avance.
Je viens vers vous pour une erreur que j'ai jamais croisé :
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'no' cannot be null' in /htdocs/Jeu/pages/entrainement2.php:44 Stack trace: #0 /htdocs/Jeu/pages/entrainement2.php(44): PDOStatement->execute() #1 /htdocs/Jeu/index13.php(154): include('/htdocs/Jeu/pag...') #2 {main} thrown in /htdocs/Jeu/pages/entrainement2.php on line 44
Voici mon code qui pose problème :
if (!empty(nl2br(stripslashes(htmlentities(htmlspecialchars(html_entity_decode($_POST['adopter']))))))) { $selection_pokemon3= $bdd->query("SELECT * FROM pokemon WHERE ExpLvlMax > '5' ORDER BY RAND()"); $reponse_affichage2 = $selection_pokemon3->fetch(); $nom = $reponse_affichage['nom']; $no = $reponse_affichage2['no']; $niveau2 = rand(35,60); $pv = ($niveau2 * 2); $pv_max = ($niveau2 * 4); $exp_max = ($niveau2 * 1000); $sexe2 = rand(1,2); $shiney3 = rand(1,1000); if($shiney3 == 1) { $shiney2 = 'shiney'; } else { $shiney2 = ''; } $time = time(); $lieu = 'CentreN2'; $insert_pok = $bdd->prepare("INSERT INTO transfertspokemon VALUES('', :ID, :no, :niveau, :pv, :pv_max, '0', :exp_max, :sexe, '0', :shiney, '', :time, :lieu, '7', '0', '', '', '', '')"); $insert_pok->bindparam(':ID', $ID, PDO::PARAM_INT); $insert_pok->bindparam(':no', $no, PDO::PARAM_INT); $insert_pok->bindparam(':niveau', $niveau2, PDO::PARAM_INT); $insert_pok->bindparam(':pv', $pv, PDO::PARAM_INT); $insert_pok->bindparam(':pv_max', $pv_max, PDO::PARAM_INT); $insert_pok->bindparam(':exp_max', $exp_max, PDO::PARAM_INT); $insert_pok->bindparam(':sexe', $sexe2, PDO::PARAM_INT); $insert_pok->bindparam(':shiney', $shiney2, PDO::PARAM_STR); $insert_pok->bindparam(':time', $time, PDO::PARAM_INT); $insert_pok->bindparam(':lieu', $lieu, PDO::PARAM_INT); $insert_pok->execute(); $msg = "Félicitation un pokemon vous a rejoins ! ";?> <script> alert('Félicitation <?php echo $nom;?> vous a rejoins dans votre stockage pokemon !'); </script><meta http-equiv="refresh" content="0;url="/> <?php } else {}
Voici le formulaire auquel il se rapporte :
<mark>Par votre démonstration, un pokemon souhaite que vous l'adopitez.</mark> <h3>Sachez tous de même que ce pokemon n'est pas forcément celui que vous combattez !!! </h3> <form action="" method="POST"> <input type="hidden" value="<?php echo $ID; ?>" name="id"> <input type="submit" value="Adopter ce pokemon !" name="adopter" style="cursor:pointer; padding:5px 20px; background-color:gold; border-radius:15px;"> </form>
Je ne suis jamais tombé sur cette erreur et je ne vois pas du tous ou se trouve l'erreur dans ce code donc si quelqu'un pouvait éclairer ma lanterne se serais vraiment généreux de sa part.
Merci par avance.
A voir également:
- 1048 column cannot be null
- Erreur 0x80070643 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Iptv erreur de lecture - Forum TV & Vidéo
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
1 réponse
Bonjour,
Le message d'erreur indique que tu essaies de mettre une valeur null dans un champ de ta table défini pour ne pas les accepter....
Quelle est la structure de ta table ?
La colonne "no" est elle bien en troisième position ( après ton id autoincrementé puis la colonne ID ) ?
Sachant que pour éviter un certain nombre d'ennuis .. il est préférable de nommer les champs dans lesquels tu veux faire l'insertion :
de la façon suivante :
Le message d'erreur indique que tu essaies de mettre une valeur null dans un champ de ta table défini pour ne pas les accepter....
Quelle est la structure de ta table ?
La colonne "no" est elle bien en troisième position ( après ton id autoincrementé puis la colonne ID ) ?
Sachant que pour éviter un certain nombre d'ennuis .. il est préférable de nommer les champs dans lesquels tu veux faire l'insertion :
de la façon suivante :
INSERT INTO tatable (champ1,champ2...) VALUES (valeur1,valeur2...)
cependant cela ne règle pas mon souci, j'ai toujours la même erreur même en signalant les champs comme tu m'a suggéré.
J'ai bien vérifié aussi l'ordre de toutes les colonnes tous est dans le bon ordre même mes variables qui doivent remplir les champs sont dans le même ordre que l'insertion.
D'autre idée ?