unsigned int mysql_field_count(MYSQL *mysql)
説明
それは接続にある最近のクエリーに対するカラムの数を戻します。
この機能の正常な使用は、mysql_store_result()
がNULL
を戻した時(および、それによって、結果セットポインターを持っていなかった時)です。この場合、mysql_field_count()
を呼び出して、mysql_store_result()
が空でない結果を生成し終えているべきであったか否かを査定することができます。これによって、クライアントプログラムが、クエリーがSELECT
(またはSELECT
のような)ステートメントであったか否かを知ることなく、適正なアクションをとることが許されます。ここの例はこれを実行できる方法を示すものです。
詳しくは 項23.2.14.1. 「なぜmysql_store_result()
時々返すNULL
の後mysql_query()
成功を返す」
を参照してください。
戻り値
結果セット中にあるカラムの数を表す無署名の整数。
エラー
なし。
例
MYSQL_RES *result; unsigned int num_fields; unsigned int num_rows; if (mysql_query(&mysql,query_string)) { // error } else // query succeeded, process any data returned by it { result = mysql_store_result(&mysql); if (result) // there are rows { num_fields = mysql_num_fields(result); // retrieve rows, then call mysql_free_result(result) } else // mysql_store_result() returned nothing; should it have? { if(mysql_field_count(&mysql) == 0) { // query does not return data // (it was not a SELECT) num_rows = mysql_affected_rows(&mysql); } else // mysql_store_result() should have returned data { fprintf(stderr, "Error: %s\n", mysql_error(&mysql)); } } }
代案はmysql_field_count(&mysql)
の呼び出しをmysql_errno(&mysql)
の呼び出しに変えることです。この場合、mysql_field_count()
の値からステートメントがSELECT
であったか否かを推定しないで、mysql_store_result()
から直接、エラーがないかチェックしています。