/* プリペアドステートメントを表す */
struct _pdo_stmt_t {
/* ドライバ固有 */
struct pdo_stmt_methods *methods;
void *driver_data;
/* true の場合は、すくなくとも 1 回はこのステートメントの実行に
* 成功していることを表す */
unsigned executed:1;
/* true の場合は、ステートメントがプレースホルダをサポートしており
* プリペアドステートメント用に bindParam() を実装できることを表す
* false の場合は、プリペアおよびバインドを PDO がエミュレートする
* 必要があることを表す */
unsigned supports_placeholders:2;
/* 結果セットのカラム数。ステートメントがすくなくとも 1 度実行される
* までは有効な値は設定されない。時には、(ドライバレベルでの)
* フェッチがコールされるまでは有効にならないこともある。
* */
int column_count;
struct pdo_column_data *columns;
/* このステートメントが準備された dbh を指す */
pdo_dbh_t *dbh;
/* 入力バインドパラメータを指す。ドライバの中には入出力パラメータを
* サポートしているものもあるが、その動作に依存することはできない */
HashTable *bound_params;
/* 名前から位置への置き換えを行う際に、このマップを使用する */
HashTable *bound_param_map;
/* 結果セット内で名前で指定した (あるいは位置で指定した) カラムに
* 関連付けた PHP 変数を指す */
HashTable *bound_columns;
/* 意味のある値が設定されていない場合もある */
long row_count;
/* ステートメントの現在のクエリを保持する */
char *query_string;
int query_stringlen;
/* バインド変数を展開した後のクエリのコピーで、
* ドライバがプリペアドステートメントをエミュレートしている
* 場合にのみ使用する */
char *active_query_string;
int active_query_stringlen;
/* カーソル固有のエラーコード */
pdo_error_type error_code;
/* ドライバ固有のパラメータ命名規則 (例: pgsql ドライバ)
* のためにクエリパーサが使用する */
const char *named_rewrite_template;
}; |