2016-11-17 39 views
0

我想插入一個本地html文件'test.html'到mysql中的表中,我正在通過嵌入式c代碼在mysql服務器上工作。不過,當我嘗試插入該HTML文件時,我得到了訪問被拒絕的錯誤。在這條線GRANT FILE ON *.* TO 'james'@'localhost'Html文件不插入Mysql表

void clrstr(char *buf){ 
    buf[0] = '\0'; 
} 
int main(int argc, char *argv[]) { 
    MYSQL mysql; 
    MYSQL_RES *res; 
    MYSQL_ROW row; 
    MYSQL_FIELD *field; 
    char query[MAX_QUERY]; 
    int x; 
    int i = 0; 

    char *records[] = { 
     "LOAD DATA INFILE 'test.html' INTO TABLE students"}; 

    mysql_init(&mysql); 
    mysql_options(&mysql, MYSQL_READ_DEFAULT_GROUP, "mydb"); 
    if (!mysql_real_connect(&mysql, HOSTNAME, USERNAME, PASSWORD, 
     DATABASE, 0, NULL, 0)) { 
     error("Could not connect to host.",&mysql); 
    } 

    clrstr(query); 
    /* varchar max*/ 
    strcat(query, "create table students (id int not null auto_increment, fileaa text(65535),primary key(id))"); 

    printf("Creating students table.\n"); 

    /* 
     Create students table 
    */ 
    if(mysql_query(&mysql, query)){ 
     error("Could not create table!",&mysql); 
    } 

    clrstr(query); 

    /* 
     Insert a records into the students table 
    */ 

    printf("Inserting students.\n"); 

    for(x = 0; x < 1; x++){ 
     if(mysql_query(&mysql, records[x])){ 
      printf("Failure to insert: %s\n",records[x]); 
      error("Could not insert record",&mysql); 
     } 
    } 

    clrstr(query); 

    /* 
     Let us look at what we inserted 
    */ 
    strcpy(query, "select * from students order by last_name"); 

    if(mysql_query(&mysql, query)) 
     error("failed select 1",&mysql); 

    /* 
     Store results from query into res structure. 
    */ 
    if (!(res = mysql_store_result(&mysql))){ 
     error("failed store 1",&mysql); 
    } 

    /* 
     print all results 
    */ 
    while ((row = mysql_fetch_row(res))) { 
     for (i=0; i < mysql_num_fields(res); i++){ 
      printf("%s ", row[i]); 
     } 
     printf("\n"); 
    } 

    /* 
     Drop the students table 
    */ 

    strcpy(query, "drop table students"); 

    if(mysql_query(&mysql,query)) 
     error("fail drop 1",&mysql); 

    /* 
     Finally close connection to server 
    */ 
    mysql_close(&mysql); 

    printf("All done\n"); 

    return 0; 
} 

我試圖加入這一行

strcat(query, "GRANT FILE ON *.* TO 'james'@'localhost',create table students (id int not null auto_increment, fileaa text(65535),primary key(id))"); 

但後來我最終得到一個語法錯誤在該行代替。當我不斷收到權限錯誤時,我不確定如何將此文件插入到數據庫中。

+1

'php'與這個有什麼關係? – Irvin

+0

你爲什麼從HTML文件中讀取?它不應該是一個文本文件的數據? –

+0

我相信你在這裏不使用blob。 – jned29

回答

0

走進中mysqladmin和運行

mysql> use mysql; 
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON yourdb.* TO [email protected] IDENTIFIED BY 'yourpassword'; 
mysql> FLUSH PRIVILEGES; 
mysql> \q 

你應該有權限在你的數據庫中的所有表,只要你連接爲從本地主機詹姆斯。