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.2.9. 「マルチプルステートメントを実行するC
APIハンドリング」をご覧ください。)
ステートメントが結果セットを返すべきかどうか知りたい場合、mysql_field_count()を使ってこれをチェックすることができます。項23.2.3.22. 「mysql_field_count()」を参照してください。
mysql_store_result()はクライアントに対するクエリーの全結果を読み取り、MYSQL_RES構造を割り当て、この構造の中に結果を配置します。
ステートメントが結果セットを戻さない(例えば、INSERTステートメント)の場合、mysql_store_result()はゼロポインターを戻します。
mysql_store_result()は結果セットが失敗した場合、ゼロポインターも戻します。mysql_error()が空でないストリングをを戻すか、mysql_errno()がゼロ以外を戻すか、mysql_field_count()がゼロを戻すかをチェックすることによって、エラーが起こったか否かをチェックすることができます。
戻された列がない場合、空の結果セットが戻されます。(空の結果セットは戻り値がゼロポインターと異なっています。)
mysql_store_result()を呼び出し、ゼロポインターでない結果を戻した後、mysql_num_rows()を呼び出して、何個の列が結果セットの中にあるかを検知することができます。
mysql_fetch_row()を呼び出して、結果セットから列をフェッチするか、mysql_row_seek()とmysql_row_tell()を呼び出して、現在の列の位置を取得するか、結果セットの中にセットすることができます。
詳しくは 項23.2.14.1. 「なぜmysql_store_result()時々返すNULL
の後mysql_query() 成功を返す」
を参照してください。
戻り値
MYSQL_RES結果を含む結果構造。NULLエラーが起こった場合。
エラー
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
未知のエラーが起こりました。
