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 :

Les insert into $_POST [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut Les insert into $_POST
    Bonjours à toutes et à tous !

    Voilà, je bug un peu sur un problème que je ne comprend pas..... Le code que je vais vous présenter fait totalement bug ma page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $queryInsert = "INSERT INTO Admin
    	VALUES (
    	'$_POST['Name']',
    	'$_POST['Matricule']',
    	'$_POST['Pw_1']'
    	)";
    $resuInsert = mysqli_query($co,$queryInsert) or die (mysqli_error($co) ."queryInsert");
    Je pense que c'est un problème de '' ou autre, sauf que je ne sais jamais comment les placer... D'ailleurs si il y à un moyen de s'en rappeler, je suis preneur.

    Merci de votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Essaie comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $queryInsert = "INSERT INTO Admin
    	VALUES (
    	".$_POST['Name'].",
    	".$_POST['Matricule'].",
    	".$_POST['Pw_1']."
    	)";
    $resuInsert = mysqli_query($co,$queryInsert) or die (mysqli_error($co) ."queryInsert");

  3. #3
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    tu dois échapper tes valeurs avant de les insérer en base avec mysqli_real_escape_string() et encadrer les valeurs texte de guillemets

  4. #4
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    #Ecatomb : Voilà l'erreur que j'ai en utilisant ton code
    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 ' 32165498, aaa )' at line 3
    queryInsert (321654987 est la matricule et aaa le PW).

    #rawsrc : Je vais étudier ta fonction

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 30
    Points : 32
    Points
    32
    Par défaut
    fait un var_dump($queryInsert) et poste la requête qui s'affiche, ca nous aidera à voir les problèmes que tu rencontres.

  6. #6
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    INSERT INTO Admin VALUES ( ze, 32165498, aaa )
    Unknown column 'ze' in 'field list' queryInsert

    Je suis très fatigué, du coup mon cerveau a du mal ><
    Je ne comprend pas pourquoi il marque ca. Normalement dans Nom je suis censé mettre Nom 'ze', matricule '32165498' et mdp mettre 'aaa'. La il me dit, si je compred bien, qu'il cherche le nom de colonne 'ZE' au lieu de me le mettre dedans.
    Images attachées Images attachées  

  7. #7
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $queryInsert = 'INSERT INTO Admin VALUES ('
                   .'"'.mysqli_real_escape_string($co, $_POST['Name']).'", '
                   .'"'.mysqli_real_escape_string($co, $_POST['Matricule']).'", '
                   .'"'.mysqli_real_escape_string($co, $_POST['Pw_1']).'")';
    $resuInsert = mysqli_query($co, $queryInsert) or die (mysqli_error($co) ."queryInsert");

  8. #8
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    Ce que tu me donne rawsrc insert des champs vides dans ma table. La requete vaut ca : INSERT INTO Admin VALUES ("", "","")

    Ps : Mon cerveau est vraiment OFF la, du coup j'applique betement sans réflechir. J'aime pas ca, mais bon... Faut que j'avance

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 30
    Points : 32
    Points
    32
    Par défaut
    Il manque les quotes quand tu insères un string.

    Une meilleur habitude c'est d'écrire ta requête en mettant le nom des colonnes :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO "nom de table" ("colonne 1", "colonne 2", ...)
    VALUES ("valeur 1", "valeur 2", ...)

  10. #10
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Si c'est vide c'est le tableau $_POST ne contient pas les valeurs que tu penses qu'il contient, c'est tout.

    Lis la doc de mysqli et reproduit les exemples à l'identique.

    PS: si tu comptes avancer sans mettre en route ton cerveau, je te souhaite bonne chance...

  11. #11
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "<br />". $_POST['Nom']." ".$_POST['Matricule']." ".$_POST['Pw_1'];
    // ze 32165498 aaa
    Mes post contiennent bien ce que je pense.
    Je n'ai jamais eu besoin de escape string lors de mes anciennes requete de ce genre.

    En temps normal c'est pas dessus que je lutte ^^

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 30
    Points : 32
    Points
    32
    Par défaut
    En mettant des quotes autour des strings que tu insères et en mettant le nom des colonnes quand tu fais ton insert ca donne quoi ?

  13. #13
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par Byron_1 Voir le message
    Je n'ai jamais eu besoin de escape string lors de mes anciennes requete de ce genre.
    Euh, tu es en train de dire que tu n'échappes jamais tes données avant de les sauvegarder en base ??? Si c'est ça : ouch !!!!

    Essaies avec ça et poste le retour :
    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
    ini_set('display_errors', true);
    ini_set('display_startup_errors', true);
    error_reporting(E_ALL);
     
    $queryInsert = <<<SQL
    INSERT INTO Admin (
        Nom_Admin,
        Matricule_Admin,
        Password
    ) VALUES (
        "{$co->real_escape_string($_POST['Name'])}",
        "{$co->real_escape_string($_POST['Matricule'])}",
        "{$co->real_escape_string($_POST['Pw_1'])}"
    )
    SQL;
     
    $resuInsert = $co->query($queryInsert) or die ("{$co->error} queryInsert");

  14. #14
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    Euh, lors de mon cursus je ne l'ai jamais vu, et personne ne m'a jamais critiqué sur ma façon de faire. De ce fait, je ne me suis jamais posé la question. Mais bon, vaut mieux tard que jamais pour apprendre. Je suis encore jeune, ça passe ! Je sais que chez moi j'ai mes anciens codes d'insertion dans une base via un formulaire (qui marchait et qui ont été présenté lors d'une soutenance). Si tu es d'accord et je les posts en MP ou sur cette discussion, et me dire "pourquoi c'est pas bien de faire ça" x) Je te remercie, toi ainsi que les autres sur cette discussion de prendre le temps de m'aider.
    Et d'ailleurs, c'est quoi cette syntaxe que tu mets avec les <<< ? Jamais vu ça encore et pour toi, cela te semble logique de l'utiliser. Donc, faudra que je m'y mette.



    Ton code marche nikel sans aucunes fautes et rentre bien les données voulu dans la base. Je comprends pas la syntaxe, mais je vais m'y pencher pour pouvoir l'utiliser par après.
    Ps : Je tiens à m'excuser de n'avoir pas fait attention à mes balises CODE et leurs indentations.
    Images attachées Images attachées  

  15. #15
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Regarde les différentes manières d'écrire du code lisible en PHP avec les syntaxes un peu exotiques : ici

    Pour être franc, ça m'étonne à peine que personne ne t'ait fait de remarques dans ton cursus. Les profs (dans la grande majorité) sont totalement déconnectés de la réalité, ont souvent un train de retard dans la mise à jour de leur savoirs et surtout ont trop souvent tendance à se reposer sur leur lauriers (purée, quelle image j'en ai...).

    Je suis tout disposé à t'apporter une critique constructive concernant le code en rapport de ta soutenance. Fais comme tu le sens.

  16. #16
    Membre du Club
    Homme Profil pro
    Etudiant(IUT info)/Stagiaire
    Inscrit en
    Mai 2013
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant(IUT info)/Stagiaire

    Informations forums :
    Inscription : Mai 2013
    Messages : 49
    Points : 47
    Points
    47
    Par défaut
    J'en ai la même image et je sors seulement de mon cursus d'IUT. Je te fournirais mon code ce soir en MP, c'est, en tout cas, très gentil de ta part. J'accepterais toutes tes remarques, elle sme permettront d'avancer.

  17. #17
    Invité
    Invité(e)
    Par défaut
    J'ai honte d'avoir oublié les quotes dans ma 1ère réponse...

    Si on les requêtes avec la méthode pdo il n'y a pas besoin du real_insert_string. Je ne me trompe pas (il me semble avoir fait des tests)?

    Syntaxe heredoc a l'air sympa. Le code final semble plus facile à lire avec.
    Faut-il la privilégier?

  18. #18
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Oui si tu passes par PDO avec prepare() et execute() pas besoin d'échapper manuellement les valeurs, ce mécanisme s'en charge pour toi.

    Citation Envoyé par ecatomb Voir le message
    Syntaxe heredoc a l'air sympa. Le code final semble plus facile à lire avec.
    Sur ce coup, tu t'es répondu toi-même, j'aime bien

  19. #19
    Invité
    Invité(e)
    Par défaut
    Merci, j'aime bien faire des questions faciles

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

Discussions similaires

  1. "Détecter" les "insert into"
    Par Drooxy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/02/2012, 19h45
  2. [AC-2007] Message pour les INSERT INTO ET UPDATE
    Par Tristan33000 dans le forum IHM
    Réponses: 2
    Dernier message: 15/06/2009, 11h48
  3. probléme avec insert into et les jontures
    Par belakhdarbts10 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/05/2007, 11h35
  4. [VBA-A] INSERT INTO en vérifiant les données avant !!
    Par Rumeurs dans le forum VBA Access
    Réponses: 9
    Dernier message: 12/04/2006, 14h07
  5. Multiplier les And dans Sql Insert Into
    Par samlepiratepaddy dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 23/09/2005, 21h55

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