PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : problem bei der erstellung von strings



willibald
16.11.2004, 16:57
Moin,

ich habe ein Problem und zwar gibt folgender Code



char *query1 = "SELECT Datum,Stunde,relFeuchte20cm,Niederschlag,Benetzung Stoff,Temp20cm FROM Bestandesw\
etter WHERE Standort='";
char *query2 = "' and Datum>= '";
char *query3 = "' and Datum<='";
char *query4 = "' ORDER BY Datum,Stunde";

query = (char *)malloc((strlen(query1) + strlen(query2)+ strlen(query3)+ strlen(query4) + 1)*
sizeof(char));

strcat(query,query1); strcat(query,Standort);
strcat(query,query2); strcat(query,Beginn);
strcat(query,query3); strcat(query,Ende);
strcat(query,query4);

if(mysql_query(conn,query)){...


folgenden Fehler:


mhenze@debian:~/c_Programme$ gcc -o zwei -I /usr/include/mysql epidemRegression1.c -lmysqlclient -lz
mhenze@debian:~/c_Programme$ ./zwei
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 'd"@d"@SELECT Datum,Stunde,relFeuchte20cm,Niederschlag,Benetzu
d"@d"@SELECT Datum,Stunde,relFeuchte20cm,Niederschlag,Benetzung Stoff,Temp20cm FROM Bestandeswetter WHERE Standort='Eesch' and Datum>= '2002-07-20' and Datum<='2002-07-23' ORDER BY Datum,Stunde



meines Erachtens steht vor dem gewollten Text
d"@d


WARUM??

Tausend Dank Matthias

martin
16.11.2004, 19:18
Hallo

das ist aber kein C-Fehler, sondern ein SQL-Fehler, daher vielleicht falsches Forum?

Wobei mir
WHERE Standort='";
auch komisch vorkommt. Schau dir mal die Anführungszeichen nochmal an.

Grüsse, Martin

16.11.2004, 19:22
Ich tät als erstes STRCPY statt STRCAT nehmen, ich weiß nicht ob der malloc den bereich löscht (calloc)
und reservier dir noch ein byte mehr für den schluß-Nuller von query
sonst kracht's vielleicht. keep codin' ! :-)