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

Bibliothèques C++ Discussion :

C++ et mysql ( sous wamp serveur) insertion de données


Sujet :

Bibliothèques C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 8
    Par défaut
    Bonjour , Je ne sais pas si c'est le bon lieu pour poster cette aide .
    Pour mon projet j 'ai connecté codeblocks a ma base de donnée mysql sous wamp.
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     
    #include <iostream>
    #include "Facturation.h"
    #include <string>
    #include <winsock.h>
    #include "MYSQL\mysql.h"
     
     
    #define def_nom_hote NULL // hote auquel se connecte le prog localhost
    #define def_nom_utilisateur NULL // par defaut le mien
    #define def_motdepasse NULL
     
    int c= 11;
     
    using namespace std;
     
    int main()
    {
     
     
     MYSQL *ptconn;
     
      ptconn=mysql_init(NULL);
     
    	if(mysql_real_connect(ptconn,"localhost","root","","facturation",0,NULL,0)){cout<< "all gud"<<endl;} else{ cout<<"toto"<<endl;}
     
     
         int a=11;
      string b="today";
        int  c=1;
     string d="achatdetomate ";
      float e=50.7;
      string f="today";
      float g=21.4;
     
     
     
    if( mysql_query(ptconn, "INSERT INTO facture(numfact,date) VALUES ('c','b')")==0)
     {  cout<<"gud insert"<<endl;}
     else
    { cout<<"toto1"<<endl;cout << mysql_error(ptconn) << endl;}
     
       if( mysql_query(ptconn, " SELECT * from facture")==0)
         {  cout<<"gud select"<<endl; }
       else{ cout<<" toto"<<endl;
       cout << mysql_error(ptconn) << endl;}
     
     
    MYSQL_RES *result = NULL;
     
    result = mysql_use_result(ptconn);
     
    if(result == NULL)
    {
    cout << "Résultat vide" << endl;
    cout << mysql_error(ptconn) << endl;
    }
    //On récupère le nombre de champs
     
    unsigned int nb_champs = mysql_num_fields(result);
    if(nb_champs != 3) cout << "C'est bizarre" << endl;
    // lecture du resultat
    MYSQL_ROW row;
     
    while ((row = mysql_fetch_row(result)))
    {
    cout << "ID : " << row[0] << ", Nom : " << row[1]
    << ", Prenom : " << row[2] << endl;
    }
     
    mysql_free_result(result);
     
    mysql_close(ptconn);
     
     
        return 0;
     
    }
    J 'arrive à me connecter, à lister les élements de la table(select) mais je n'arrive pas a rentrer des valeurs dans la table(insert) .
    A la place de int ou float j'ai 0 dans le tableau et la place des string j'ai un espace vide

  2. #2
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( mysql_query(ptconn, "INSERT INTO facture(numfact,date) VALUES ('c','b')")==0)
    Tu insères ici 'c' et 'b' dans ta table, et non les valeurs de c et de b.

    Vois du côté de stringstream (FAQ).

    Si tu as des 0, c'est probablement parce que le type des données que tu insères n'est pas celui des attributs de ton tuple. (ce qui, ici, est normal, je suppose que numfact est de type entier et que date est de type date, or, 'c' et 'b' ne sont ni l'un ni l'autre)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 8
    Par défaut
    J'ai regardé sur les entrées sorties de c++.Les int des c++ sont les memes int de mysql,
    ici c=1;

    Désolée pour mon impolitesse je suis assez droit au but, lool merci pour ta réponse et tu dois avoir raison .Neanmoins comme je l'ai dit ils ont normalement la meme taille

  4. #4
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    Tu n'as pas compris.

    Dans ta requête, tu insères le caractère 'c' et le caractère 'b', et non la valeur de ces variables.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 8
    Par défaut
    Je vois sauf que je n'ai pas trouvé le moyen d'envoyer ce qu'il y a dans ma variable .J'ai essayer de changer les quotes mais la ca me cause des erreurs de codes c++.

    Il faudrait créer un string dans lequel on aurai placé directement les valeur dont on a besoin.
    En plus clair

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    string quer="INSERT INTO facturation(numfact,date) VALUES('";
     
    //transformer en chaine de caractere ce dont on a besoin et directement les //ajouter
     
    quer+=toto;
    quer+="','";

  6. #6
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Non, il ne faut pas.

    Quand on fait ça, on s'expose fatalement à des problèmes d'injection SQL, parce que ça n'est pratiquement jamais fait correctement (ne serait-ce qu'à cause des problèmes d'encodage).

    Donc on fait du parameter binding. En plus, c'est plus performant .

    Un petit lien avec un exemple : http://dev.mysql.com/doc/refman/5.0/...t-execute.html

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

Discussions similaires

  1. [Wamp] Plantage Apache lors de la déconnexion à MySQL sous Wamp Server
    Par Gigagun dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 26/09/2009, 17h23
  2. [Wamp] Script PHP-MySQL sous Wamp
    Par od.dev dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 28/08/2008, 13h57
  3. Connexion depuis Unix sur serveur Mysql sous Windows
    Par krlou dans le forum Installation
    Réponses: 4
    Dernier message: 01/02/2008, 17h32
  4. Serveur mysql sous linux ou Windows?
    Par gnaoui_9999 dans le forum Installation
    Réponses: 5
    Dernier message: 11/10/2006, 13h28

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