11550


C言語にてmysqlを利用しております。

その際、"mysql_fetch_row"によって得られた"MYSQL_ROW row"の値のnullチェックをしたいと考えております。

下記のコードを書いておりますが、"row[1]"の値が無い時に、"if(row[1]!=NULL)"の箇所にてセグメンテーションフォールトになってしまいます。

"if(row[1]!=NULL)"をどのように変更したら良いのでしょうか？

[code]

        MYSQL *conn;
    
        conn = mysql_init(NULL);
        if (!mysql_real_connect(conn, DBHOST, DBUSER, DBPASS, DBNAME, 0, NULL, 0)) {
            fprintf(stderr, "%s\n", mysql_error(conn));
            exit(1);
        }
    
        MYSQL_ROW row;
        MYSQL_RES *result1;
        char sqlt[256];
    
        sprintf(sqlt,"SELECT id,name FROM user WHERE id=100");
        mysql_query(conn,sqlt);
        result1 = mysql_store_result(conn);
        row = mysql_fetch_row(result1);
    
        if(row[1]!=NULL){
    
        }
        mysql_free_result(result1);
    
[/code]


CC BY-SA 3.0
2015-06-20T06:10:03.597
11549
2015-06-20T07:05:36.420
2015-06-20T07:05:36.420
3639
10071
question
mysql c
C言語でのmysqlにおける"mysql_fetch_row"によって得られた"MYSQL_ROW"の値のnullチェック


フェッチする行がないときはrow自体がNULLになるので row[1]ではダメです。

[code]

    if (row != NULL)
    
[/code]

とするよりは

[code]

    while(row=mysql_fetch_row(result1)){
      // ここに行の処理を書く
    }
    
[/code]

として存在する行を処理するようにしたほうがいいでしょ‌​う


CC BY-SA 3.0
2015-06-20T06:33:34.833
11550
2015-06-20T06:33:34.833
7837
11549
answer