Проблема с mysql_query и вставкой в него переменной через sprintf()

#mysql #sql #c

#mysql #sql #c

Вопрос:

Я пытаюсь вставить значения температуры, считанные с датчика DS18B20, в базу данных mysql, используя sprintf для хранения переменных в строке и mysql_query для записи их в базу данных. В базе данных у меня есть два столбца «temp» и «date», которые являются типами данных int и string.

В моей предыдущей базе данных все работало идеально, но в этой у меня возникли некоторые проблемы.

Данные по умолчанию в столбцах НЕ равны NULL

В результате я вижу температуру и дату в терминале, но

 SELECT * FROM tmpdate1 
  

выдает мне «Пустой набор»

Пожалуйста, помогите мне выяснить, в чем проблема, и решить ее

Вот мой код:

 #include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "libfahw.h"
#include <mysql.h>
#include <unistd.h>
#include <time.h>
#define BUF_SIZE                    (64)

int main(int argc, char ** argv)
{
        time_t t;
        char times[1024]={};
        char  timestr[] = {"%s"};
        time(amp;t);
        MYSQL *conn;
        char query[1024]={};
        char query1[1024]={};
        char query_str[] = {"INSERT INTO tmpdate1(temp) VALUES (%d)"};
        char query_str1[] = {"INSERT INTO tmpdate1(date) VALUES (%s)"};
        if ((conn=mysql_init(NULL))==NULL)
        {
           fprintf(stderr, "Could not init DBn");
           return EXIT_FAILURE;
        }
       char temperature[BUF_SIZE];
       memset(temperature, 0, BUF_SIZE);

       if(mysql_real_connect(conn, "localhost", "user12", "34klq*", "defense3", 0, NULL, 0) == NULL)
       {
          fprintf(stderr, "DB connection errorn");
          return EXIT_FAILURE;
       }
      for (int i = 1; i>0; i  )
 {
                printf("n %d", atoi(temperature)/1000);
                printf("n %s", ctime(amp;t));
                sprintf(times, timestr, ctime(amp;t));
                sprintf(query, query_str, atoi(temperature)/1000);
                sprintf(query1, query_str1, timestr);
                mysql_query(conn, query);
                mysql_query(conn, query1);
   }
   return 0;
}
  

Комментарии:

1. Почему у вас два INSERT s? Вы действительно хотите, чтобы дата и соответствующая температура были в разных строках? И вы, возможно, захотите заключить литерал даты в одинарные кавычки в запросе.

2. Что такое mysql_query в любом случае?

3. Я хочу использовать две ВСТАВКИ, потому что мне нужно создать линейный график из базы данных, где y — температура, а x — дата и время

4. Посмотрите, как привязать значения к параметрам в запросе. То, что вы делаете, очень небезопасно и подвержено ошибкам, и его следует избегать.

5. Итак, это проблема, почему у меня пустые столбцы?