IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

requete bdd suivi par if / Fatal error: Uncaught PDOException: SQLSTATE[42000]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2019
    Messages : 3
    Par défaut requete bdd suivi par if / Fatal error: Uncaught PDOException: SQLSTATE[42000]
    Bonjour à tous,

    je suis bloquée dans mon bloc, est ce qu'il y a une faute que je ne vois pas?
    Ou alors comme j'ai pu trouvé sur d'autre forum ceci n'est pas possible à faire et il n'y a qu'un "SELECT CAST( CASE" a faire mais sauf erreur de ma part je ne peux pas écrire cela en php?

    Je vous explique le but de mon code:
    Après connexion, les users sont redirigés sur une page de paiement (stripe, webhook) , s'ils ont bien payés alors dans ma bdd la variable payed est remplis avec 1.

    J'aimerais bloqué les users connectés mais qui n'ont pas payés.

    Je me suis donc dit que je devais récupérer le résultat de la variable dans ma bdd et après faire un if.
    Mais j'obtiens cette erreur:

    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 '' at line 1 in /homepages/42/d842612564/htdocs/rdv.php:15 Stack trace: #0 /homepages/42/d842612564/htdocs/rdv.php(15): PDO->query('SELECT `payed` ...') #1 {main} thrown in /homepages/42/d842612564/htdocs/rdv.php on line 15


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    $payed = $_POST['payed'] ;
     
     
     if (!isset($_SESSION['logged']) || !$_SESSION['logged'])//pas connecté
      {
       header('location:connexion.php');
      } 
     
        $mail = isset($_SESSION['mail']) ? $_SESSION['mail'] : '';
        echo $_SESSION['mail'];
     
    $reponse = $bdd->query("SELECT `payed` FROM `membres` WHERE mail= $mail");
    $reponse->execute();
    $result = $reponse->fetch();
    /*$reponse contenait toute la réponse de MySQL en vrac, sous forme d'objet.
    $donnees est un array renvoyé par le fetch(). Chaque fois qu'on fait une boucle, fetch va chercher dans $reponse*/
    while ($donnees = $reponse->fetch())
     
    {
    if($payed = true){
            $_SESSION['payed'] = $payed;
            header('location: rdv.php');
            }
     
    if($payed = false){
            echo "Veuillez effectuer le paiement pour accéder à nos services";
            header('location: paiement.php');
            }
     
    }
     
    $reponse->closeCursor();
    Nom : session3.jpg
Affichages : 416
Taille : 112,1 Ko

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 668
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 668
    Par défaut
    pour utiliser des paramètres dans une requête, il vaut mieux utiliser les requêtes préparées pour éviter les attaques par injection :
    https://www.php.net/manual/fr/pdo.pr...statements.php

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2019
    Messages : 3
    Par défaut erreur
    Bonjour,

    déjà merci pour la réponse, j'ai suivi vos conseils et je n'ai plus l'erreur mais j'ai un autre problème,
    lorsque le user est loggé que la valeur soit 1 ou 0 pour le user j'obtiens toujours la même réponse :
    "Veuillez effectuer le paiement pour accéder à nos services"
    et cela ne redirige pas vers la page en plus. il y a juste le echo avec le message

    Dans ma bdd les valeurs sont bien soit 1 ou 0 je ne comprends pas . vous avez une idée?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <?php
    session_start();
    include('bdd.php');
        $payed = $_POST['payed'] ;
     
        $reponse = $bdd->prepare("SELECT payed FROM `membres` WHERE mail ");
        $reponse->execute();
        $donnees = $reponse->fetch();
        $payed = $donnees['payed'];
     
    if ((isset($_SESSION['logged'])) && (!empty($_SESSION['logged'])) AND ($payed == true))
            {
            $_SESSION['payed'] = $payed;
            header('location: rdv.php');
            exit();
            }
     
     
    if ((isset($_SESSION['logged'])) && (!empty($_SESSION['logged'])) AND ($payed == false))
            {
            echo "Veuillez effectuer le paiement pour accéder à nos services";
            header('location: paiement.php');
            exit();
            }
     
    else
        {
            // pas de login en session : proposer la connexion
            header('location:connexion.php');
        }
    ?>
    Nom : session.jpg
Affichages : 384
Taille : 94,1 Ko
    Images attachées Images attachées  

  4. #4
    Membre éprouvé
    Homme Profil pro
    Agence digitale
    Inscrit en
    Avril 2020
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Agence digitale
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2020
    Messages : 69
    Par défaut
    Hello,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $reponse = $bdd->prepare("SELECT payed FROM `membres` WHERE mail ");
    Il te manque quelque chose ici. "where" sous entend une condition. Hors ici, tu n'indiques pas a quoi doit être égal "mail".

    ex: SELECT payed FROM `membres` WHERE mail = "quelque chose"

Discussions similaires

  1. Erreur Fatal error: Uncaught PDOException: SQLSTATE[HY000]
    Par omelhor dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/12/2021, 16h29
  2. Réponses: 0
    Dernier message: 28/02/2020, 20h29
  3. Fatal error: Uncaught PDOException
    Par tissebaos dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/06/2018, 12h18
  4. Réponses: 2
    Dernier message: 06/03/2018, 15h51
  5. [MySQL] Fatal error: Uncaught PDOException: SQLSTATE[22007]: Invalid datetime format: 1292
    Par jmtrivia dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/06/2017, 14h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo