MYSQL_STMT * mysql_prepare(MYSQL *mysql, const char
*query, unsigned long length)
説明
ヌル終端文字列 query
で指定された SQL
クエリをプリコンパイルし、その後の処理に使用するステートメントハンドルを返します。このクエリは単一
SQL
ステートメントで構成されている必要があります。このステートメントには、その終わりを示すセミコロン(‘;
’)または
\g
を追加する必要はありません。
アプリケーションは、SQL
文字列の適当な位置に疑問符(‘?
’)を埋め込むことで、SQL
ステートメントで 1
つ以上のパラメータマーカーを使用できます。
マーカーは、SQL
ステートメントの特定の位置に埋め込まれた場合にのみ適正に処理されます。たとえば、マーカーは
INSERT
ステートメントの
VALUES()
のリストでレコードに設定するカラムの値を指定する部分、または
WHERE
節でカラムの値と比較する値を指定する部分に使用できます。しかし、SELECT
ステートメントが返すカラムを指定する選択リストで識別子(テーブルまたはカラムの名前など)として使用したり、等号(=
)などのバイナリ演算子の両方のオペランドを指定することはできません。パラメータの型を決定することができないので、後者の制約が必要になります。一般に、パラメータは、データ操作言語(DML)ステートメントでのみ適正に処理され、データ定義言語(DDL)ステートメントでは処理されません。
パラメータマーカーは、ステートメントを実行する前に、mysql_bind_param()
を使用してアプリケーション変数にバインドする必要があります。
戻り値
コンパイルが正常に終了した場合は
MYSQL_STMT
構造体へのポインタ。エラーが発生した場合は
NULL
。
エラー
CR_COMMANDS_OUT_OF_SYNC
コマンドが正しい順序で実行されなかった。
CR_OUT_OF_MEMORY
メモリが不足していた。
CR_SERVER_GONE_ERROR
MySQL サーバがいなくなった。
CR_SERVER_LOST
クエリの実行中にサーバへの接続が切断された。
CR_UNKNOWN_ERROR
不明なエラーが発生した。
コンパイルが失敗した場合(mysql_prepare()
が NULL
を返した場合)、エラーメッセージは
mysql_error()
を呼び出すことによって取得できます。
例
mysql_prepare()
の使用方法については、項11.1.7.5. 「mysql_execute()
」
の「例」を参照してください。
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.