

Dev C++で下記のソースコードを実行すると下記のエラーが出ます。  
このエラーメッセージを解決する方法を教えてください。

[code]

    27  11  C:\Users\patch\Documents\main.cpp   [Error] cannot convert 'char**(MYSQL_RES*) {aka char**(st_mysql_res*)}' to 'MYSQL_ROW {aka char**}' in assignment
    28      C:\Users\patch\Documents\Makefile.win   recipe for target 'main.o' failed
    
[/code]

`コードをここに入力`

[code]

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <C:\Program Files\MySQL\MySQL Server 5.7\include/mysql.h>
    
    int main()
    //int res(const char *s)
    {
      MYSQL *m;
      MYSQL_RES *r;
      MYSQL_ROW w;
      MYSQL_STMT *s;
      MYSQL_BIND par[2];
      MYSQL_BIND res[2];
      char sd[4][60];
      unsigned long sdl[4];
      my_bool nl[4];
      char sql1[]= "SELECT user, host FROM mysql.user WHERE host LIKE '%localhost%'";
      char sql2[]= "SELECT user, host FROM mysql.user WHERE host LIKE ?";
    
      mysql_real_connect(m,"localhost","root","","test",0,NULL,0);
    
      puts("Regular Execution");
      mysql_real_query(m, sql1, strlen(sql1));
    
      r= mysql_store_result(m);
      while (w= mysql_fetch_row)
      {
        printf("%s@%s\n", w[0], w[1]);
      }
    
      puts("Prepared Statement");
      mysql_stmt_prepare(s, sql2, strlen(sql2));
      // parameter
      par[0].buffer_type= MYSQL_TYPE_STRING;
      par[0].buffer= sd[0];
      par[0].is_null= 0;
      par[0].length= &sdl[0];
      mysql_stmt_bind_param(s,par);
    
      strncpy(sd[0],"%localhost%",60);
      sdl[0]= strlen(sd[0]);
      mysql_stmt_execute(s);
      res[0].buffer_type= MYSQL_TYPE_STRING;
      res[0].buffer= sd[1];
      res[0].buffer_length= 60;
      res[0].is_null= &nl[1];
      res[0].length= &sdl[1];
      res[1].buffer_type= MYSQL_TYPE_STRING;
      res[1].buffer= sd[2];
      res[1].buffer_length= 60;
      res[1].is_null= &nl[2];
      res[1].length= &sdl[2];
      mysql_stmt_bind_result(s,res);
    
      while(w= mysql_fetch_row(r))
      {
        printf("%s@%s\n", sd[1], sd[2]);
      }
    
      mysql_stmt_free_result(s);
      mysql_stmt_close(s);
      mysql_close(m);
    }
    
[/code]


CC BY-SA 3.0
2017-04-17T02:06:53.973
34057
2020-06-03T07:01:00.117
2017-04-17T02:25:31.123
3249
22556
question
mysql c api
MySQL　APIの実行時のエラーに関して


プログラム中の

[code]

      while (w= mysql_fetch_row)
    
[/code]

の部分は

[code]

      while (w= mysql_fetch_row(r))
    
[/code]

ではないかと思います。


CC BY-SA 3.0
2017-04-17T02:30:56.110
34059
2017-04-17T02:30:56.110
3249
34057
answer