Erreur PDO
BuddyLove_x52
Messages postés
123
Date d'inscription
Statut
Membre
Dernière intervention
-
BuddyLove_x52 Messages postés 123 Date d'inscription Statut Membre Dernière intervention -
BuddyLove_x52 Messages postés 123 Date d'inscription Statut Membre Dernière intervention -
Salut tous le monde ! J'arrive pas a faire mon insert...
Voici mon message d'erreur :
Notice: Undefined index: pseudo in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php on line 7
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pseudo_dest' cannot be null' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php:15 Stack trace: #0 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php(15): PDOStatement->execute(Array) #1 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.php(2): include('C:\Program File...') #2 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\index.php(33): include('C:\Program File...') #3 {main} thrown in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php on line 15
*
Et voici mon code :
Voici mon message d'erreur :
Notice: Undefined index: pseudo in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php on line 7
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'pseudo_dest' cannot be null' in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php:15 Stack trace: #0 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php(15): PDOStatement->execute(Array) #1 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.php(2): include('C:\Program File...') #2 C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\index.php(33): include('C:\Program File...') #3 {main} thrown in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\pages\envoi.func.php on line 15
*
Et voici mon code :
<?php //la fonction qui va enrgistré l'invitations dans la BDD $pseudo_exp=$_SESSION['pseudo']; $pseudo_dest=$_GET['pseudo']; $bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); $req = $bdd->prepare('INSERT INTO amis(pseudo_exp,pseudo_dest,date_invitation,active) VALUES(:pseudo_exp, :pseudo_dest, NOW(),active)'); $req->execute(array( 'pseudo_exp' => $pseudo_exp, 'pseudo_dest' => $pseudo_dest)); ?>
A voir également:
- Erreur PDO
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
2 réponses
'lut, ici PDO se plaint que comme
Fais une vérif avec une condition
$_GET['pseudo']vaut
null, il ne peut pas l'insérer dans la colonne
pseudo_destde ta BDD car les données qu'elle est conçue pour recevoir ne peuvent pas être nulles.
Fais une vérif avec une condition
ifavant de faire la requête, la condition échéante fait en sorte de retourner une erreur.
Merci de la réponse ! Mais comment je pourrais faire alors pour donner une valeur a $_GET['pseudo'] ? Le liens qui permet d'arriver a cet page utilise GET['pseudo'] justement !
La page qui me permet d'ajouter un ami :
La page qui me permet d'ajouter un ami :
<?php include('liste_membre.func.php'); include('header.php'); include('menus.php'); include('connect.php'); include('profile.func.php'); ?> <div class="info"> <?php $infos_membres_choisis = recuperer_info_membre_choisi(); if($infos_membres_choisis == true && $_GET['pseudo'] != $_SESSION['pseudo']) { foreach($infos_membres_choisis as $info_membre_choisi) { if(demande_existe() ==0) { ?> <div class="error">Vous n'etes pas amis avec <?php echo $info_membre_choisi['pseudo'];?><br/> <a href="index.php?page=envoi">Envoyer une invitation</a><br/></div> <?php }else{ ?> <img src="avatar/<?php echo $info_membre_choisi['avatar']; ?>" height="200" width"200" alt="avatar"> <p><strong>Email</strong> : <em><?php echo $info_membre_choisi['email'];?></em></p> <p><strong>Sexe</strong> : <em><?php echo $info_membre_choisi['sexe'];?></em></p> <p><strong>Situation</strong> : <em><?php echo $info_membre_choisi['situation']; ?></em></p> <?php } } }else{ header("location:index.php?page=membre"); } ?> </div>
C'est lui
qui me dirige vers la page :
Et voici ma function :
<a href="index.php?page=envoi">Envoyer une invitation</a><br/></div>
qui me dirige vers la page :
<?php include('envoi.func.php'); include('connect.php'); enreg_invitation(); header("location:index.php?page=profile&pseudo=".$_GET['pseudo']); ?>
Et voici ma function :
<?php //la fonction qui va enrgistré l'invitations dans la BDD $pseudo_exp=$_SESSION['pseudo']; $pseudo_dest=$_GET['pseudo']; $bdd = new PDO('mysql:host=localhost;dbname=rs;charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); $req = $bdd->prepare('INSERT INTO amis(pseudo_exp,pseudo_dest,date_invitation,active) VALUES(:pseudo_exp, :pseudo_dest, NOW(),active)'); $req->execute(array( 'pseudo_exp' => $pseudo_exp, 'pseudo_dest' => $pseudo_dest)); ?>
Comme les variables $_GET ne sont pas conservées entre deux pages, il faut le faire soi-même: on reprend donc le paramètre voulu (ici
$info_membre_choisi['pseudo']) et on le remet à la main dans l'URL, en le faisant passer par des fonctions qui évitent des problèmes relatifs au formatage du lien dans le code HTML (ex urlencode convertit un espace en "%20", et htmlentities convertit un & en
& amp;(sans l'espace; sinon CCM convertit le code HTML en vrai &))