文字

pdo_stmt_t definition

All fields should be treated as read-only unless explicitly stated otherwise.

pdo_stmt_t

struct _pdo_stmt_t {
    
    struct pdo_stmt_methods *methods;
*
void *driver_data;
**
    unsigned executed:1;
***
    unsigned supports_placeholders:2;
****
    int column_count;
*****
struct pdo_column_data *columns;
******
    pdo_dbh_t *dbh;    
    HashTable *bound_params;
    
    HashTable *bound_param_map; 
    
    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;    
    const char *named_rewrite_template;
};
*

The driver must set this during SKEL_handle_preparer() .

**

This item is for use by the driver; the intended usage is to store a pointer (during SKEL_handle_factory() ) to whatever instance data is required to maintain a connection to the database.

***

This is set by PDO after the statement has been executed for the first time. Your driver can inspect this value to determine if it can skip one-time actions as an optimization.

****

Discussed in more detail in SKEL_handle_preparer.

*****

Your driver is responsible for setting this field to the number of columns available in a result set. This is usually set during SKEL_stmt_execute() but with some database implementations, the column count may not be available until SKEL_stmt_fetch() has been called at least once. Drivers that implement SKEL_stmt_next_rowset() should update the column count when a new rowset is available.

******

PDO will allocate this field based on the value that you set for the column count. You are responsible for populating each column during SKEL_stmt_describe() . You must set the precision, maxlen, name, namelen and param_type members for each column. The name is expected to be allocated using emalloc() ; PDO will call efree() at the appropriate time.

上一篇: 下一篇: