Un soucis avec Insertion Mysql en PDO

Fermé
max-jacob - Modifié le 16 juil. 2020 à 20:46
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 16 juil. 2020 à 21:01
Bonsoir les génies,

Je suis coincé dans mon code lors d'une insertion mysql en BD que j'aimerais faire en PDO.

L'objectif c'est de vérifier d'abord si l'email et l'identifiant de cet utilisateur n'est pas déjà utiliser, si tel n'est pas le cas, c'est ainsi que je procèderai à l'insertion en bd.

Ma BD est composé d'une table "Personne" avec comme attribut:
- id
- username
- nom,
- age
- dateEnregistrement

Mon problème se trouve d'abord au niveau de la vérification de l'existence de l'username et de l'email dans la BD et ensuite l'insertion.

Ci-dessous mon code et merci d'avance de votre aide.



<?php
//Les données sont soumis par POST a partir d'un formulaire se trouvant a la page precedent
$email=$_POST['email'];
$username=$_POST['username'];
$RecordDuplicationVerification = $pdo->prepare("SELECT * FROM Personne WHERE username =? AND email = ?");
$RecordDuplicationVerification->execute([$username]);
$EtatDuplication = $RecordDuplicationVerification->fetch();

if($EtatDuplication){
//Si le meme username et email figure deja dans la base de donnes
die( "<center><p class='NumeroIndispo'><img src='../img/Warning.png' width='150' height='150'><br>Désolé, ce nom d'utilisateur et/ou cet adresse email est déjà utilisé par un autre utilisateur</a></p></center>");
}else{
//Same username && email are not found, execute the INSERT

$Insertion = $pdo->prepare('INSERT INTO Personne VALUES
(NULL,
:username,
:nom,
:age,
:email,
CURRENT_TIMESTAMP)');

//On lie chaque marqueur a une valeur
$Insertion->bindValue(':username', $_POST['username'], PDO::PARAM_STR);
$Insertion->bindValue(':nom', $_POST['nom'], PDO::PARAM_STR);
$Insertion->bindValue(':age', $_POST['age'], PDO::PARAM_STR);
$Insertion->bindValue(':email', $_POST['email'], PDO::PARAM_STR);

//Exécution de la requête préparé
$insertIsOk = $Insertion->execute();

if($insertIsOk){
$message = "Félicitation! L'enregistrement s'est deroule avec successs";
}else{
$message = "Un probleme est survenu durant l'enregistrement";
}

?>

<html>
<head></head>
<body>
<?php echo $message; ?>
</body>
</html>

A voir également:

1 réponse

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
16 juil. 2020 à 21:01
Bonjour
Commence par appliquer ça :

https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

Et ceci:. https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Puis reviens nous voir avec ton code modifié si ton souci persiste.

Nb: pense a indiquer dans les balises de code, le langage php afin d'avoir la coloration syntaxique.
Explications à lire entièrement disponibles ici: https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

0