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 :

Insérer une donnée dans une base de donnée php.my admin


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 6
    Par défaut Insérer une donnée dans une base de donnée php.my admin
    Bonjour,

    je suis nouveau dans le codage web et actuellement j'ai un soucis pour insérer des données dans ma BDD. Avec la fonction INSERT INTO, mes données n'apparaîssent pas dans ma table.
    Voici mon code pour insérer mes données dans ma table:

    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
    <?php
     
         //connexion base de données
        $servername = "localhost";
        $username = "root";
        $password = "";
        $dbname = "marco";
     
        $fname = $_POST['Nboitier'];
        $lname = $_POST['Nmessages'];
     
        // connect to mysql database using mysqli
     
        $connect = mysqli_connect($servername, $username, $password, $dbname) or die ("connexion impossible");
     
        // mysql query to insert data
     
        $query = "INSERT INTO messages_sigfox ('boitier', 'messages']) VALUES ('$fname','$lname')";
     
        $result = mysqli_query($connect,$query);
     
        echo mysqli_error($connect);
     
     
    ?>
    Actuellement mysqli_error($connect) me renvoie une erreur de syntaxe sur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      $query = "INSERT INTO messages_sigfox ('boitier', 'messages']) VALUES ('$fname','$lname')";
    J'ai beau cherché et avoir regardé des dizaines de videos, tutos et réponses sur différents forums, je n'arrive pas à saisir l'erreur. Si quelqu'un avait une idée potentiellement (avant que je ne fracasse mon pc de préférence ).

    En remerciant tous ceux qui liront ce long poste,

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Bonjour, quand tu as une erreur ajoute la à ton poste et surtout lit la.

    Dans ton code je vois une erreur de syntaxe grosse comme une maison:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO messages_sigfox ('boitier', 'messages'])
    #                                                 ^ que fait ce crochet fermant ici?

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    "...VALUES ('$fname','$lname')"

    D'autre part, on ne rentre pas les valeurs dans une requête par concaténation, mais en utilisant une requête préparée: mysqli::prepare.

    Pour finir, les tutoriels vidéos sont à mon avis (qui n'engage que moi) une perte de temps: c'est long, il y a peu d'informations, les 3/4 du temps, il n'y a aucune réflexion pédagogique derrière. Devant un tutoriel écrit on a une attitude active favorisant la mémorisation, on évolue selon ses connaissances et son rythme, devant un tutoriel vidéo, on devient vite passif, le rythme est imposé et on finit avec un filet de bave qui va jusqu'à parterre.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 6
    Par défaut
    Bonsoir,

    Je vais corriger cette vilaine faute de syntaxe, c'était une tentative avec des crochets pour voir si ça marchait mieux.
    Concernant la requête préparée, j'ai vu ça quelque part mais je n'ai pas osé. Je vais tenter de suite et voir ce que ça donne.
    Merci pour votre réponse

    PS: je viens de corriger la faute de syntaxe mais cela ne change rien (Affichage sur mon écran avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo mysqli_error($connect);
    Erreur de syntaxe pr�s de ''boitier', 'messages') VALUES ('F3423','1234557KK')' � la ligne 1

    Il n'y a plus qu'à essayer les requêtes préparées

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2020
    Messages : 6
    Par défaut
    okay!!!!! j'ai réussi avec les requêtes préparées!!!!! Voici le code refait:

    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
     
    <?php
     
         //connexion base de données
        $servername = "localhost";
        $username = "root";
        $password = "";
        $dbname = "marco";
     
        $info1 = $_POST['Nboitier'];
        $info2 = $_POST['Nmessages'];
     
        // connect to mysql database using mysqli
     
        $connect = mysqli_connect($servername, $username, $password, $dbname) or die ("connexion impossible");
     
        // mysql query to insert data
        $stmt = $connect->prepare("INSERT INTO messages_sigfox (boitier, messages) VALUES (?,?)"); 
        $stmt->bind_param("ss", $info1, $info2);
     
        $stmt->execute();  
     
    ?>

    Ma petite question pour ma culture et pour bien faire les choses:
    Pourquoi est-il préférable de passer par une requête préparée? J'ai bien compris que le but est de paramétrer/préparer une sorte de template pour répéter l'opération mais quand on ne veut faire l'opération qu'une seule fois, est-il vraiment nécessaire de passer par là?
    Enfin je voudrais savoir quand même par curiosité ce qui n'allait pas dans mon premier code parceque pour moi la structure me semblait plus que logique .

    En vous remerciant pour vos réponses et encore merci du tuyau!!

  5. #5
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    La requête préparée permet aussi de ne pas se soucier d'encadrer les valeurs avec des quotes, de l'échappement de caractères problématiques dans les valeurs (comme un quote ou un slash) car c'est automatique. Ceci constitue notamment une parade contre les injections SQL.

  6. #6
    Membre chevronné
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2017
    Messages
    508
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2017
    Messages : 508
    Par défaut
    Salut.
    mysqli_connect tend aussi à être obsolète.
    Commence à t'habituer avec la connexion PDO.

    Cordialement.

Discussions similaires

  1. [4.x] Insérer une donnée dans une table imbriqué
    Par KEVIN.DLL dans le forum Symfony
    Réponses: 1
    Dernier message: 09/11/2020, 22h00
  2. Réponses: 3
    Dernier message: 04/08/2010, 14h05
  3. Réponses: 9
    Dernier message: 30/01/2008, 15h40
  4. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  5. Probléme pour insérer une variable dans un champs
    Par BOUTRAIS dans le forum Access
    Réponses: 2
    Dernier message: 11/04/2006, 22h45

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