1. #1
    Membre chevronné
    Homme Profil pro
    Analyste développeur
    Inscrit en
    juin 2010
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : juin 2010
    Messages : 309
    Points : 601
    Points
    601

    Par défaut Insertion dans la base de données

    Bonjour à tous,

    Je suis entrain de gérer l'inscription d'une personne sur mon site et je ne comprends pas pourquoi ça marche pas. Lorsque je fais l'insert avec mes variables php, rien ne s'ajoute dans la base de données, en revanche lorsque j'exécute la requête avec des valeurs en dur ça marche (le code en commentaire). Pourtant les champs ne sont pas vide, vu que le test sur $_GET ["login"] fonctionne...

    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
    if (isset ( $_GET ["login"] )) {
                // récupération de toutes les informations
                $login = $_GET ["login"];
                $nom = $_GET ["nom"];
                $prenom = $_GET ["prenom"];
                $email = $_GET ["mail"];
                $mdp = $_GET ["mdp"];
     
                // ajoute ou modifie (suivant si la personne existe ou non)
                if (isset ( $_SESSION ["id"] )) {
                    $id = $_SESSION ["id"];
                    $requete = 'update personne set login="' . $login . '", nom="' . $nom . '", prenom="' . $prenom . '", mail="' . $email . '", mdp="' . $mdp . '" where idpersonne=' . $id;
                    pg_query ( $requete );
                } else {
                    // Insertion dans la BD
                    $requete = 'insert into personne (login, nom, prenom, email, mdp) values ("'. $login .'", "'.$nom .'", "'.$prenom.'", "'.$email.'", "'.$mdp.'")';
                    //$requete = "insert into personne (login, nom, prenom, email, mdp) values ('tt', 'tt', 'tt', 'tt', 'tt')";
                    pg_query ( $requete );
     
                    $id = $requete . 'RETURNING id';
    }
    John.

  2. #2
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 708
    Points : 8 672
    Points
    8 672

    Par défaut

    Salut,

    et si tu essayais après avoir échappé tes données juste au cas où tu aurais des caractères exotiques qui font que cela ne passe pas -> pg_escape_string()

    Il t'est aussi possbile d'utiliser le délimiteur de chaine de postGres, très pratique pas besoin de s'embêter avec les quotes.
    Il faut juste que tu t'assures bien qu'aucune valeur ne contient le délimiteur défini. N'oublies pas que le délimiteur est sensible à la casse.
    # Dans la Création, tout est permis mais tout n'est pas utile...

  3. #3
    Membre chevronné
    Homme Profil pro
    Analyste développeur
    Inscrit en
    juin 2010
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : juin 2010
    Messages : 309
    Points : 601
    Points
    601

    Par défaut

    Salut et merci pour ta réponse. Je ne vois pas pourquoi le pg_escape serait utile vu que pour l'instant je n'ai que des lettres à mettre dans les champs ?

  4. #4
    Membre chevronné
    Homme Profil pro
    Analyste développeur
    Inscrit en
    juin 2010
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste développeur

    Informations forums :
    Inscription : juin 2010
    Messages : 309
    Points : 601
    Points
    601

    Par défaut

    Je viens de trouver mon erreur. C'est qu'en fait je faisais mes tests quand j'étais connecté avec un login, donc forcement ça allait dans le test d'update des informations que je n'ai pas encore terminé.

    Merci quand même !

  5. #5
    Modérateur
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    mars 2004
    Messages
    3 708
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : mars 2004
    Messages : 3 708
    Points : 8 672
    Points
    8 672

    Par défaut

    est ce que tu récupères quelque chose avec pg_last_error() ?
    # Dans la Création, tout est permis mais tout n'est pas utile...

+ Répondre à la discussion
Cette discussion est résolue.

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