mysql查询插入不起作用

时间:2017-01-14 01:46:13

标签: mysql c

我正在尝试将字段插入到mysql数据库中,但它不起作用。

我尝试使用"插入图像",使用字符串文字的查询字符串来改变abit。 我查看here以尝试了解语法是否不同或类似。

我认为我是根据API进行的。

Here我的设置

从出口我得到

i = 1
MySQL Tables in mysql database:
images

这是代码。

有什么想法吗?

    /* Simple C program that connects to MySQL Database server*/
#include <mysql.h>
#include <stdio.h>
#include <stdlib.h>
   int main() {
      MYSQL *conn;
      MYSQL_RES *res;
      MYSQL_ROW row;
      char *server = "localhost";
      char *user = "root";
      //set the password for mysql server here
      char *password = "********"; 
      char *database = "myDB";
      conn = mysql_init(NULL);
      if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
      {
          fprintf(stderr, "%s\n", mysql_error(conn));
          exit(1);
      }
      /* send SQL query */
      if (mysql_query(conn, "show tables") == 1)
      {
          fprintf(stderr, "%s\n", mysql_error(conn));
          exit(1);
      }
    int i = mysql_query(conn ,"INSERT INTO `myDB`.`images` (`id`, `date`, `path`) VALUES (NULL, CURRENT_TIMESTAMP, 'mypath/foo/bar')");
    printf("i = %d \n", i);
      res = mysql_use_result(conn);
      /* output table name */
      printf("MySQL Tables in mysql database:\n");
      while ((row = mysql_fetch_row(res)) != NULL)
      {
          printf("%s \n", row[0]);
      }
      /* close connection */
      mysql_free_result(res);
      mysql_close(conn);
    return 0;
    }

3 个答案:

答案 0 :(得分:1)

假设id是主要ID和INT,它可能是自动增量。如果是这种情况,请从您的陈述中取出id

INSERT INTO `myDB`.`images` (`date`, `path`) VALUES (CURRENT_TIMESTAMP, 'mypath/foo/bar');

如果我们知道表格的格式,那么回答这个问题会很有帮助。这假设date是TIMESTAMP而path是CHAR或者很可能是VARCHAR。

答案 1 :(得分:0)

确认您的ID列不是主键,因为主键不允许空列

答案 2 :(得分:0)

我设法让它现在正常运作。我找到了一些例子here,我试图重新创建并使其正常工作。

它与其他查询不完全相同

      if (!mysql_real_connect(conn, server, user, password, database, 0, NULL, 0))
  {
      fprintf(stderr, "%s\n", mysql_error(conn));
      exit(1);
  }
  if (mysql_query(conn ,"INSERT INTO images VALUES (NULL , CURRENT_TIMESTAMP , 'awesome')"))
  {
     fprintf(stderr, "Error: could not execute query \n");
      exit(1);
  }
    int my_bool = mysql_commit(conn);

  mysql_free_result(res);
  mysql_close(conn);
return 0;