Moin,
ich häng mal wieder fest, seltsamer weise immer da wo ich eigentlich denke das es doch einfach sein müsste. zum programm: es holt einige daten aus einer datenbank unter anderem eine id, diese id ist in einer anderen tabelle (der selben datenbank) einem programm namen zugeordnet. aber seht selbst:

#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>

int main() {

   MYSQL mysql;
   MYSQL_RES *res;
   MYSQL_RES *res2;
   MYSQL_ROW row;
   MYSQL_ROW row2;

   char query[200];
   char query2[200];
   char channel_name;

   mysql_init(&mysql);
mysql_real_connect(&mysql,"localhost","user","passwd","datenbank",0,NULL,0);

sprintf(query,"SELECT programm, count(DISTINCT user)AS anzahl_user FROM daten WHERE datum like '20100913' AND zeit like '0000' GROUP BY programm ORDER BY anzahl_user LIMIT 1,15 ");
   mysql_real_query(&mysql,query,(unsigned int)strlen(query));
   res = mysql_use_result(&mysql);

   while(row = mysql_fetch_row(res)) {

sprintf(query2,"SELECT channel_name FROM channels WHERE pid LIKE '%s'", row[0]);
       mysql_real_query(&mysql,query2,(unsigned int)strlen(query2));
       res2 = mysql_use_result(&mysql);

       while(row2 = mysql_fetch_row(res2)) {

/* und hier weis ich nicht weiter, das was auskommentiert ist waren einige meiner versuche */

           //strcpy(channel_name, row2[0]);
           //channel_name = row2[0];
           strncpy(channel_name, row2[0], 5);

       }

/* so soll es dann ausgegeben werden, es endet aber mit einem Speicherzugriffsfehler */

       printf("%s:%s, ",channel_name,row[1]);
       //printf("%s:%s, ",row2[0],row[1]);
       channel_name = "";
   }
   mysql_free_result(res);
   mysql_free_result(res2);

   return 0;
}



Die 2. while schleife könnte man sich sparen, es wird nur ein ergebniss gefunden. Ich vermute mal das es wieder was mit den variablen zu tun hat die c ja nicht kennt ;) Ich sach mal "akustisch" hab ich das wohl verstanden aber bei der umsetzung scheints zu hapern, jedenfalls ist es nen gefühl von mir.


Nochmal ne 2. frage:
beim kompilieren spuckt gcc des öfteren mal:
warning: assignment makes integer from pointer without a cast
aus.
was hat denn das zu bedeuten? bei einem anderen progämmchen bekomm ich auch so eine warung, trotzdem funktioniert es wie es soll.


-Sven-
--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an