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

4

1 回答 1

1

在查询中,您尝试将常量字符串"temp"插入列中。MySQL 库应该如何知道程序中的变量名?

于 2013-06-06T07:39:32.540 回答