Problème base de données MySql [Résolu]

Signaler
Messages postés
26
Date d'inscription
vendredi 12 mars 2021
Statut
Membre
Dernière intervention
15 avril 2021
-
Messages postés
32437
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
-
Bonjour,

Tout à l'heure, j'étais dans phpmyadmin , quand j'ai eu un problème de connexion, alors que je modifiais une des tables de mes bases de données : je ne peux désormais plus y accéder, ou la supprimer pour en créer une ayant le même nom... ce n'est pas la raison de ma venue ici :

La table qui a "bugué" s'appelait "membres" (elle contenanit les infos des membres de mon site, vous inquiéter pas le site est pas encore publié donc elle était vide :D), et je l'ai renommé "utilisateur", donc j'ai du changer mes codes de connexion et d'inscription pour que php demande à mysql de chercher dans la nouvelle table et pas l'ancienne... j'ai juste à chaque fois changé le nom de la table, pour mon code de connexion, sa marche nickel, pour mon code d'inscription, c'est pas trop sa... Ma page indique "inscription réussi", mais quand je vais voir dans ma base de donnée, rien ne s'est ajouté. Voici mon code :
<?php 
if (preg_match("#^[a-zA-Z0-9._-]{2,16}$#", $_POST['pseudo']))
{
if (isset($_POST['mail']))
{
$_POST['mail'] = htmlspecialchars($_POST['mail']);

if (preg_match("#^[a-zA-Z0-9àáâãäåçèéêëìíîïðòóôõöùúûüýÿ._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $_POST['mail']))//#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#

{
if (($_POST['mdp']) == ($_POST['mdp2']))
{

if (preg_match("#^[a-zA-Z0-9._-]{6,16}$#", $_POST['mdp']))
{
$pass_hache = password_hash($_POST['mdp'], PASSWORD_DEFAULT);
try
{
$bdd = new PDO('mysql:host=localhost;dbname=wayblog;charset=utf8', 'root', 'root');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
$req = $bdd->prepare('SELECT * FROM utilisateurs WHERE pseudo = :pseudo ');
$req->execute(array('pseudo' => $_POST['pseudo']));
$resultat = $req->fetch();

if ($resultat)
{
echo 'Cet identifiant n\'est pas libre !';
header('Location: inscription.php?pseudo=deja_utilisé');

}
else
{
$pseudo = $_POST['pseudo'];

$req = $bdd->prepare('SELECT * FROM utilisateurs WHERE mail = :mail ');
$req->execute(array('mail' => $_POST['mail']));
$resultat2 = $req->fetch();

if ($resultat2)
{
echo 'Cet identifiant n\'est pas libre !';
header('Location: wayblog-inscription.php?email=deja_utilisé');

}
else
{
$email = $_POST['mail'];
$type = "membre";
$req = $bdd->prepare('INSERT INTO utilisateurs(pseudo, pass, mail, date_inscription, type) VALUES(:pseudo, :pass, :email, CURDATE()), :type');
$req->execute(array(
'pseudo' => $pseudo,
'pass' => $pass_hache,
'email' => $email,
'type' => $type));
echo 'Félicitations, vous êtes désormais inscrit sur notre site !';
session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['pseudo'] = $pseudo;
}


}

}

else
{
header('Location: inscription.php?longueurcode=incorrect');
}
}
else
{
header('Location: inscription.php?codes=non-identiques');
}
}
else
{
header('Location: inscription.php?mail=invalide');
}
}
else
{
header('Location: inscription.php?mail=invalide');
}
}
else
{
header('Location: inscription.php?longueur=incorrect');
}





?>

Sa ne m'affiche aucun message d'erreur si ce n'est :
Notice: Trying to access array offset on value of type bool in C:\MAMP\htdocs\Therzord\inscription_post.php on line 61

ce qui ne devrait pourtant pas altérer, la connexion, j'avais enlevé la ligne de code n°61 ($_SESSION['id'] = $resultat['id'];) , ainsi il ne m'envoyait plus de message d'erreur mais ça ne marchait toujours pas... s'il vous plait aidez moi, je comprend pas ce qui va pas...

J'ai joins une photo de la structure de ma base de donnée au cas où, mais je pense pas que ça soit ça, si ?

Merci d'avance pour vos réponse :)



Configuration: Windows / Chrome 88.0.4324.190

2 réponses

Messages postés
32437
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
3 484
Messages postés
26
Date d'inscription
vendredi 12 mars 2021
Statut
Membre
Dernière intervention
15 avril 2021

Ok merci j'obtiens cela :

Fatal error: Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''membre'' at line 1 in C:\MAMP\htdocs\Therzord\inscription_post.php:61 Stack trace: #0 C:\MAMP\htdocs\Therzord\inscription_post.php(61): PDOStatement->execute(Array) #1 {main} thrown in C:\MAMP\htdocs\Therzord\inscription_post.php on line 61
Messages postés
32437
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
3 484
Et à quelle ligne de code corrspond la ligne 61 du fichier C:\MAMP\htdocs\Therzord\inscription_post.php

De plus,. Montre nous le code modifié.
>
Messages postés
32437
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021

Bonjour, j'ai trouvé comment régler le problème, il s'agissait d'un problème avec la fonction fetch(),

Merci
Messages postés
32437
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 mai 2021
3 484 > Val987
Tu penseras alors à marquer le sujet en résolu.