typedef struct {
pdo_mysql_db_handle *H;
MYSQL_RES *result;
const
MYSQL_FIELD *fields;
MYSQL_ROW current_data;
#
if
PDO_USE_MYSQLND
const
size_t *current_lengths;
#
else
zend_long *current_lengths;
#
endif
pdo_mysql_error_info einfo;
#
if
PDO_USE_MYSQLND
MYSQLND_STMT *stmt;
#
else
MYSQL_STMT *stmt;
#
endif
int num_params;
PDO_MYSQL_PARAM_BIND *params;
#ifndef PDO_USE_MYSQLND
my_bool *in_null;
zend_ulong *in_length;
#
endif
PDO_MYSQL_PARAM_BIND *bound_result;
my_bool *out_null;
zend_ulong *out_length;
unsigned int params_given;
unsigned max_length:1;
} pdo_mysql_stmt;
struct st_mysqlnd_stmt
{
MYSQLND_STMT_DATA * data;
MYSQLND_CLASS_METHODS_TYPE(mysqlnd_stmt) * m;
zend_bool persistent;
};
struct st_mysqlnd_res
{
MYSQLND_CONN_DATA *conn;
enum_mysqlnd_res_type type;
unsigned int field_count;
MYSQLND_RES_METADATA *meta;
MYSQLND_RES_BUFFERED *stored_data;
MYSQLND_RES_UNBUFFERED *unbuf;
zend_bool persistent;
MYSQLND_CLASS_METHODS_TYPE(mysqlnd_res) m;
};
struct st_mysqlnd_stmt_data
{
MYSQLND_CONN_DATA *conn;
MYSQLND_RES *result;
unsigned int field_count;
unsigned int param_count;
MYSQLND_CMD_BUFFER execute_cmd_buffer;
unsigned int execute_count;
};
struct _pdo_stmt_t {
struct pdo_stmt_methods *methods;
void *driver_data;
unsigned executed:1;
unsigned supports_placeholders:2;
unsigned _reserved:29;
int column_count;
struct pdo_column_data *columns;
}