2017-01-14 113 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;