2013-06-06 23 views
0

我在我的SQL數據庫中創建該表(結果)(試驗)插入串

CREATE DATABASE `test`; 
USE `test`; 
CREATE TABLE `results` (
`number` bigint(20) unsigned NOT NULL AUTO_INCREMENT, 
`temp` float NOT NULL, 
`fech` datetime NOT NULL, 
PRIMARY KEY (`number`), 
UNIQUE KEY `indice_UNIQUE` (`number`) 
) ENGINE=InnoDB AUTO_INCREMENT=100; 

我有下一個代碼讀取緩衝器,並得到一些令牌與strtok的

int learn_port2(int fd) 
{ 
MYSQL *conn; 
MYSQL_RES *res; 
MYSQL_RES *res1; 
MYSQL_ROW row; 
char *server = "127.0.0.1"; 
char *user = "root"; 
char *password = "***"; // got tot keep my data secret 
char *database = "test"; 

conn = mysql_init(NULL); 
if(!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0)) 
{ 
    fprintf(stderr, "%s\n", mysql_error(conn)); 
    return -1; 
    //finish_with_error(conn); 
} 
int n, i; 
char buff[300]; 
memset(buff, 0, sizeof(buff)); 
for (int x = 0; x<3; x++) 
    { 
    char temp[7] = ""; 
    char* ptr; 
    int i; 
    float temp; 
    n=read(fd,buff,sizeof(buff)); 
    sleep(1); 
    printf("%s", buff); 
    printf("\n"); 

    if (buff[37] == 'N' || buff[38] == 'N' || buff[39] == 'N' || buff[40] == 'N') 
    { 
    ptr = strtok(buff, ",=T()"); 
    i = 0; 

    while (ptr != NULL) 
    { 
      if (i == 10) 
     strcat(temp, ptr); // copies T 
     ptr = strtok(NULL, ",=T()"); 
    i++; 
    } 

    printf("Results: %s\n", temp); 
    } 


char query[]="INSERT INTO results(`temp`,`fech`) VALUES(temp,CURRENT_TIMESTAMP)"; 


if(mysql_query(conn, query)) 
{ 
fprintf(stderr, "%s\n", mysql_error(conn)); 
return -1; 
} 

res = mysql_use_result(conn); 
} 

}

我有一個像

Results:22.34 
Results:34.56 
結果

我想將這個結果保存在我的數據庫中。但是我總是在臨時列中有零,而不是這些結果。我查詢中的問題在哪裏? char temp [7] =「」的聲明出錯了,我認爲。 在查詢中。

+0

我找到了使用sprintf的解決方案 – dali1985

回答

1

在查詢中,您試圖將常量字符串"temp"插入列中。如何讓MySQL庫知道程序中的變量名?

+0

好的你是對的!這就是我發佈這個問題的原因。我如何在表格中插入temp的值?我可以在我的查詢中寫什麼? – dali1985

+0

@ dali1985 google'snprintf()'。 – 2013-06-06 08:15:25

+0

是的,我在上面的評論中寫過我使用sprintf.Thanks – dali1985