2013-06-06 3 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 

и я хочу сохранить этот результат в моей базе данных. Но у меня всегда есть нули в колонке temp, а не эти результаты. Где проблема в моем запросе? Что-то не так с объявлением char temp [7] = ""; Я думаю. в запросе.

+0

Я нашел решение с использованием sprintf – dali1985

ответ

1

В запросе вы пытаетесь вставить постоянную строку "temp" в столбец. Как библиотека MySQL должна знать имена переменных в вашей программе?

+0

ok вы правы! Вот почему я опубликовал этот вопрос. Как вставить значение температуры в таблицу? Что я могу написать в моем запросе? – dali1985

+0

@ dali1985 google 'snprintf()'. –

+0

да, я написал в комментарии выше, я использовал sprintf.Thanks – dali1985

Смежные вопросы