我在我的 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] = ""; 的声明有问题 我认为。在查询中。