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.11.21 mysql_stmt_prepare()

int mysql_stmt_prepare(MYSQL_STMT *stmt, const char *stmt_str, unsigned long length)

説明

mysql_stmt_init() によってステートメントハンドルが返されるとすると、文字列 stmt_str によって指示される SQL ステートメントを準備し、ステータス値を返します。文字列の長さは length 引数によって指定してください。文字列は 1 つの SQL ステートメントで構成されている必要があります。ステートメントに終端のセミコロン (;) または \g を追加しないでください。

アプリケーションでは、疑問符 (?) 文字を SQL 文字列の適切な位置に埋め込むことによって、1 つまたは複数のパラメータマーカーを SQL ステートメントに含めることができます。

マーカーは SQL ステートメント内の特定の場所でのみ正当です。たとえば、それらは、INSERT ステートメントの VALUES() リスト (行のカラム値を指定するため) で、または比較値を指定するために WHERE 句内のカラムとの比較で使用できます。ただし、それらは識別子 (テーブルまたはカラム名など)、または = 等号などのバイナリ演算子の両方のオペランドに指定するために使用できません。パラメータの型を判断することは不可能な場合があるため、後者の制限は必要です。一般に、パラメータは Data Manipulation Language (DML) ステートメント内でのみ正当で、Data Definition Language (DDL) ステートメント内では許可されません。

パラメータマーカーは、ステートメントを実行する前に mysql_stmt_bind_param() を使用してアプリケーション変数にバインドされている必要があります。

プリペアドステートメントによって参照されているテーブルやビューのメタデータの変更が検出され、それが次に実行されるときに、ステートメントが自動再準備されます。詳細については、セクション8.9.4「プリペアドステートメントおよびストアドプログラムのキャッシュ」を参照してください。

戻り値

成功の場合はゼロ。エラーが発生した場合、ゼロ以外。

エラー
  • CR_COMMANDS_OUT_OF_SYNC

    コマンドが正しくない順番で実行されました。

  • CR_OUT_OF_MEMORY

    メモリー不足。

  • CR_SERVER_GONE_ERROR

    MySQL サーバーが存在しなくなりました。

  • CR_SERVER_LOST

    クエリー中にサーバーへの接続が失われました。

  • CR_UNKNOWN_ERROR

    不明なエラーが発生しました。

準備操作が成功しなかった (つまり、mysql_stmt_prepare() はゼロ以外を返す) 場合、mysql_stmt_error() を呼び出して、エラーメッセージを取得できます。

セクション23.8.11.10「mysql_stmt_execute()」の例を参照してください。


User Comments
  Posted by Scott Bailey on September 29, 2005
For those of you suffering from a "1047: Unknown command" error, ensure your client and server side MySQL versions are compatible.
Sign Up Login You must be logged in to post a comment.