Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

syntaxerror i mysql INSERT kommando[löst]

Jag har skrivit ett C-program INSERT INTO till en MySQL databas.
Programmet läser data från en textfile till en struct.
INSERT-kommandot ska läsa data från struct och insert data into en databas.
INSERT-kommandot:

    if(mysql_query(conn, "INSERT INTO temp(datum,tid,fukt,temp) VALUES(term.datum,term.tid,term.fukt,term.temp)")){
    {
         fprintf(stderr,"%s\n",mysql_error(conn));
         mysql_close(conn);
         exit(1);
    }

Kompileringen går OK.
Det fullständiga programmet bifogas.
Jag får följande felmeddelande när jag kör programmet:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'term.datum,term.tid,term.fukt,term.temp)' at line 1

BilagaStorlek
insert_test-2.c.txt2.02 kB

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

JanPihlgrens bild

Problemet löst med en "work a round".

/*************************************************
* insert_v4.c
* Jan Pihlgren  2016-07-27
* Kompilering: gcc insert_v4.c -L/lib/mysql -L/usr/lib -lmysqlclient -o insert
* Exekvering: ./insert
*
*************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include </usr/include/mysql/mysql.h>

int main(int argc, char **argv)
{
 
  FILE *fp;

  MYSQL *conn;
  MYSQL_RES *result;
  MYSQL_ROW row;

  int num_fields;
  int i;

  char *server = "localhost";
  char *user = "root";
  char *password = "1edinge1"; /* sätt lösenordet för root först. Ange detta här. */
  char *database = "temperatur";
  char *query = NULL;

  char datum[11];
  char tid[6];
  char fukt[5];
  char temp[5];

  int storlek=28;
  int postnr;
  char sql[256]="INSERT INTO temp(datum,tid,fukt,temp) VALUES(";
  char sqlquery[256];
 
  conn = mysql_init(NULL);
  
  if (mysql_real_connect(conn, server, user, password, database, 0, NULL, Innocent == NULL) {
         fprintf(stderr, "%s\n", mysql_error(conn));
         mysql_close(conn);
         exit(1);
  }
   
  fp=fopen("/home/jan/Development/Data/temp2.txt", "r");
  //fseek(fp,SEEK_SET,0);
  //fscanf(fp,"%s %s %s %s",datum,tid,fukt,temp);


  postnr=0;
  while (!feof(fp)){
fseek(fp,0,SEEK_CUR); //offset = 0 för textfiler.
fscanf(fp,"%s %s %s %s",datum,tid,fukt,temp);
//printf("postnr=%d Datum = %s Tid = %s Fukt = %s Temp = %s\n",postnr,datum,tid,fukt,temp);
postnr++;
strcpy(sqlquery,sql);
strcat(sqlquery,"'");
strcat(sqlquery,datum);
strcat(sqlquery,"'");
strcat(sqlquery,",'");
strcat(sqlquery,tid);
strcat(sqlquery,"',");
strcat(sqlquery,fukt);
strcat(sqlquery,",");
strcat(sqlquery,temp);
strcat(sqlquery,")");
 
//printf("sqlquery = %s\n",sqlquery);

if(mysql_query(conn,sqlquery)){
  fprintf(stderr,"%s\n",mysql_error(conn));
  mysql_close(conn);
  exit(1);
}
  }

  fclose(fp);
  mysql_close(conn);

}