明示的に述べられている場合を除き、ドライバからはすべてのフィールドが 読み込み専用となります。
図 45-2. pdo_stmt_t
/* プリペアドステートメントを表す */ 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; };