MYSQL_RES *mysql_store_result(MYSQL *mysql)
説明
正常にデータを取得したクエリ(SELECT
、SHOW
、DESCRIBE
、EXPLAIN
)については、mysql_store_result()
または mysql_use_result()
を呼び出す必要があります。
他のクエリでは mysql_store_result()
または mysql_use_result()
を呼び出す必要はありませんが、すべてのケースで
mysql_store_result()
を呼び出しても、異常が発生したり、目立った動作が行われるようなことはありません。mysql_store_result()
が 0
を返すかどうかを調べることで、クエリで結果セットが生成されたかどうかを検出できます。これについては後述します。
クエリが結果セットを返すタイプかどうかを調べるには、mysql_field_count()
を使用します。 See
項11.1.3.20. 「mysql_field_count()
」。
mysql_store_result()
は、クエリの結果セット全体をクライアントに読み込み、MYSQL_RES
構造体にメモリを割り当て、この構造体に結果セットを格納します。
クエリが結果セットを返さない場合(たとえば、クエリが
INSERT
ステートメントだった場合)、mysql_store_result()
はヌルポインタを返します。
また、結果セットの読み込みに失敗した場合も、mysql_store_result()
はヌルポインタを返します。エラーが発生したかどうかを調べるには、mysql_error()
がヌルポインタを返さないかどうか、mysql_errno()
が 0 以外の値を返すかどうか、または
mysql_field_count()
が 0
以外の値を返すかどうかを調べます。
返すレコードが存在しない場合は空の結果セットが返されます(空の結果セットは、戻り値としてのヌルポインタとは異なります)。
mysql_store_result()
を呼び出して、戻り値がヌルポインタ以外だった場合、mysql_num_rows()
を呼び出すと結果セットに含まれるレコード数を取得できます。
mysql_fetch_row()
を呼び出すと、結果セットからレコードを取得できます。mysql_row_seek()
および mysql_row_tell()
を呼び出すと、結果セット内のカレントレコードの位置を設定および取得できます。
結果セットが必要なくなったら、mysql_free_result()
を呼び出す必要があります。
See 項11.1.12.1. 「mysql_query()
が正常に終了した後で
mysql_store_result()
が
NULL
を返す場合があるのはなぜか」。
戻り値
結果セットが格納された 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
不明なエラーが発生した。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.