2017-01-14 87 views
0

我想插入一个字段到MySQL数据库,但它不起作用。mysql查询插入不工作

我试图改变使用只是“插入到图像”,使用查询字符串确保字符串文字。 我看着here尝试了解语法是否有所不同或什么。

我认为Iam根据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; 
    } 
+0

如果只有mysql的库有一个函数来获取信息的错误,http://dev.mysql.com/doc/refman/5.7/en/mysql -error.html。顺便说一句,你忘了“;”。 – Stargateur

+0

必须提交'insert'查询。如果不是,则不执行插入。它不会产生任何可以取得的结果。 – DyZ

+0

你能举一个例子@DYZ – Jacob

回答

1

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

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

如果知道表格的格式,回答这个问题会有帮助。假设date是TIMESTAMP,path是CHAR或最可能是VARCHAR。

+0

Yed id是主键,有一个链接到Q表中的一张图片Id是AI – Jacob

+0

因此它会由数据库自动给出一个数字,所以它可以在INSERT中跳过,试一下我提供的语句,看看是否有效, – mrUlrik

+0

不是它的一样,我得到的响应i = 1,myDB中没有任何变化。 – Jacob

0

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

+0

ID是主要的,但是我使用AI。从phpmyadmin。它在那里工作:s – Jacob

+0

这更适合作为评论。 – alk

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;