MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
説明
結果セットの次の行を取得します。mysql_store_result()
のあとで使用すると、mysql_fetch_row()
は、それ以上取得する行がない場合に、NULL
を返します。mysql_use_result()
のあとで使用すると、mysql_fetch_row()
は、それ以上取得する行がないか、エラーが発生した場合に NULL
を返します。
行内の値の数は mysql_num_fields(result)
によって指定されます。row
が mysql_fetch_row()
への呼び出しからの戻り値を保持している場合、その値へのポインタは、row[0]
から row[mysql_num_fields(result)-1]
までとしてアクセスされます。行内の NULL
値は NULL
ポインタによって示されます。
行内のフィールド値の長さは、mysql_fetch_lengths()
を呼び出すことによって取得できます。空のフィールドと NULL
を含むフィールドはどちらも長さが 0 です。これらを区別するには、フィールド値のポインタをチェックします。ポインタが NULL
である場合、フィールドは NULL
です。そうでない場合、フィールドは空です。
戻り値
次の行の MYSQL_ROW
構造。それ以上取得する行がないか、エラーが発生した場合は NULL
。
エラー
mysql_fetch_row()
の呼び出しと呼び出しの間に、エラーはリセットされません。
-
CR_SERVER_LOST
サーバーへの接続がクエリー中に失われました。
-
CR_UNKNOWN_ERROR
不明なエラーが発生しました。
例
MYSQL_ROW row;
unsigned int num_fields;
unsigned int i;
num_fields = mysql_num_fields(result);
while ((row = mysql_fetch_row(result)))
{
unsigned long *lengths;
lengths = mysql_fetch_lengths(result);
for(i = 0; i < num_fields; i++)
{
printf("[%.*s] ", (int) lengths[i],
row[i] ? row[i] : "NULL");
}
printf("\n");
}