MYSQL_RES *mysql_store_result(MYSQL *mysql)
説明
mysql_query()
または mysql_real_query()
を呼び出したあとに、結果セットを正常に生成するすべてのステートメント (SELECT
、SHOW
、DESCRIBE
、EXPLAIN
、CHECK TABLE
など) に対して、mysql_store_result()
または mysql_use_result()
を呼び出す必要があります。結果セットの処理を終了したら、mysql_free_result()
も呼び出す必要があります。
ほかのステートメントに対して、mysql_store_result()
または mysql_use_result()
を呼び出す必要はありませんが、あらゆるケースで mysql_store_result()
を呼び出しても、それは何の害も及ぼしたり、顕著なパフォーマンスの低下を招いたりすることはありません。mysql_store_result()
がゼロ以外の値を返すかどうかをチェックすることによって、ステートメントに結果セットがあるかどうかを検出できます (これについてはあとで詳しく説明しています)。
複数ステートメントのサポートを有効にする場合、mysql_next_result()
を呼び出すループを使用して、それ以上の結果があるかどうかを判断することによって、mysql_query()
または mysql_real_query()
への呼び出しからの結果を取得してください。例については、セクション23.7.17「複数ステートメント実行の C API サポート」を参照してください。
ステートメントが結果セットを返すかどうかを知る必要がある場合は、mysql_field_count()
を使ってこれをチェックできます。セクション23.7.7.22「mysql_field_count()」を参照してください。
mysql_store_result()
はクライアントへのクエリーの結果全体を読み取り、MYSQL_RES
構造を割り当て、この構造に結果を配置します。
ステートメントが結果セットを返さなかった場合 (たとえば、それが INSERT
ステートメントであった場合)、mysql_store_result()
は NULL ポインタを返します。
mysql_store_result()
は結果セットの読み取りに失敗した場合も、NULL ポインタを返します。mysql_error()
が空でない文字列を返すか、mysql_errno()
がゼロ以外を返すか、または mysql_field_count()
がゼロを返すかどうかをチェックすることによって、エラーが発生したかどうかをチェックできます。
返される行がない場合、空の結果セットが返されます。(空の結果セットは戻り値としての NULL ポインタとは異なります。)
mysql_store_result()
を呼び出し、NULL ポインタでない結果が返されたあとに、mysql_num_rows()
を呼び出して、結果セット内にある行数を調べることができます。
mysql_fetch_row()
を呼び出して、結果セットから行をフェッチしたり、mysql_row_seek()
と mysql_row_tell()
を呼び出して、結果セット内の現在の行の位置を取得または設定したりできます。
セクション23.7.15.1「mysql_query() が成功を返したあとに mysql_store_result() が NULL を返すことがあるのはなぜか」を参照してください。
戻り値
結果を含む MYSQL_RES
結果構造。エラーが発生した場合は NULL
(0)。
エラー
mysql_store_result()
は成功した場合に、mysql_error()
と mysql_errno()
をリセットします。
-
CR_COMMANDS_OUT_OF_SYNC
コマンドが正しくない順番で実行されました。
-
CR_OUT_OF_MEMORY
メモリー不足。
-
CR_SERVER_GONE_ERROR
MySQL サーバーが存在しなくなりました。
-
CR_SERVER_LOST
サーバーへの接続がクエリー中に失われました。
-
CR_UNKNOWN_ERROR
不明なエラーが発生しました。