/* プリペアドステートメントを表す */
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;
}; |