MYSQL res in neuem Array speichern - nur wie?



  • Hallo community,

    als PHP-Umsteiger bereitet mir C++ nach wie vor etwas Kopfzerbrechen, daher wende ich mich hilfesuchend an Euch. Folgende Situation: ich habe ein Skript das auf C++ umgeschrieben werden soll, dass viele Anfragen ausführt und die Ergebnisse immer wieder verarbeitet werden. Ich mache das bei PHP so, dass ich die result_sets in arrays speichere und fertig. Nur bekomme ich das bei C++ nicht hin. Ich mache bisher das:

    MYSQL_RES *res_set;
      MYSQL_ROW row;
    
      // Alle user holen
      std::ostringstream query_1;
      query_1 << "SELECT u.user_id, ...."
      query_1 << // andere Informationen etc
    
      mysql_query(conn, query_1.str().c_str());
      res_set = mysql_store_result(conn);
    
      // Hier das Array vorbereiten, das die Daten auffangen soll
      // Es kommen nur Integerwerte aus der Anfrage zurück
      int erg_res[mysql_num_rows(res_set)][mysql_num_fields(res_set)];
    
      int user_dran = 0;
      while((row = mysql_fetch_row(res_set)) != NULL)
      {
        for(i = 0; i < mysql_num_fields(res_set); i++)
        {
          // Hier mache ich denke ich den Fehler, nur wie richtig? 
          erg_res[user_dran][i] = row[i];
          // Die nächste Zeile gibt das aus was ich da erwarte     
          cout << row[i] << endl;
          // Diese Zeile gibt mir ?Adressen? aus?? 
          cout << erg_res[user_dran][i] << endl;
        }
        user_dran++;
      }
    
      mysql_free_result(res_set);
    

    Sieht jemand meinen Fehler? Sicherlich vermische ich da was mit Zeiger / Wert, da das alles wirklich noch recht neu für mich ist. Wäre für jede Hilfe sehr dankbar. Die Tutorials geben leider auch nix her, da diese immer gleich die Ergebnisse ausgeben anstatt diese zwischenzuspeichern oder so...

    DANKE!
    Temruk



  • hi, da du anscheinend die c api von mysql mit c++ vermischt (nicht schlimm, nur eine feststellung) hier mal ein link
    http://www.pronix.de/pronix-858.html

    denke, dort ist alles gut beschrieben. kannst trotzdem weiter bei cout bleiben, wo er printf schreibt 😉

    es gibt übrigens auch eine c++ api, nur als hinweis. ich weiß nicht, wie weit du mit objektorientierter programmierung vertraut bist als php umsteiger.

    🙂

    ps: das thema passt nicht nach c++ standard, gehört nach datenbanken 😉

    edit: link verbessert



  • Danke Elise, genau von dieser Seite habe ich auch mein (Halb) Wissen. Nur das Prob ist, dass dort eben immer die Ergebnisse gleich gecoutet werden, und ich will die aber in einem Array speichern, da ich meherere Ergebniss-Arrays haben werde, also erg_user, erg_irgendwas und da später lange mit rumhantiere. Nur genau diesen Schritt bekomme ich leider nicht hin :(.



  • das erste problem, was ich sehe, ist, dass arrays in c++ auf dem stack immer eine feste größe brauchen bei der initialisierung.

    also haut dein konstrukt so nicht hin. hier:

    int erg_res[mysql_num_rows(res_set)][mysql_num_fields(res_set)];
    

    müssen konstanten drinstehen.

    dynamisch gehen arrays auf dem heap (über zeiger), aber ein zweidimensionales ist etwas schwerer...

    es gibt darüber hinaus noch vectoren aus der stl.

    schau dir erstmal c++ an, oder c (ich bin mir unsicher, was du machen möchtest).. und die idee zu arrays. (in php sind arrays anders gebaut).



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Datenbanken verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Anmelden zum Antworten