Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


23.8.7.22 mysql_field_count()

unsigned int mysql_field_count(MYSQL *mysql)

説明

接続での最近のクエリーのカラムの数を返します。

この関数を通常使用するときは、mysql_store_result()NULL を返した (および、そのために結果セットポインタがない) ときです。この場合、mysql_field_count() を呼び出して、mysql_store_result() が空でない結果を生成しているかどうかを判断できます。これにより、クライアントプログラムは、クエリーが SELECT (または SELECT に似た) ステートメントであったかどうかを知らなくても、正しいアクションをとることができます。ここに示す例では、これを実行する方法を説明しています。

セクション23.8.15.1「mysql_query() が成功を返したあとに mysql_store_result() が NULL を返すことがあるのはなぜか」を参照してください。

戻り値

結果セット内のカラムの数を表す符号なし整数。

エラー

なし。

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() から直接、エラーをチェックします。


User Comments
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.