欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

对于pdo结构体的梳理代码

程序员文章站 2022-03-27 12:15:04
...
这篇文章主要介绍了关于对pdo结构体的梳理代码,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下
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; //st_mysqlnd_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;///st_mysqlnd_stmt_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;

    /* For metadata functions */
    MYSQLND_RES_METADATA    *meta;

    /* To be used with store_result() - both normal and PS */
    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;/* count how many times the stmt was executed */
};
struct _pdo_stmt_t {
    /* driver specifics */
    struct pdo_stmt_methods *methods;
    void *driver_data;

    /* if true, we've already successfully executed this statement at least
     * once */
    unsigned executed:1;
    /* if true, the statement supports placeholders and can implement
     * bindParam() for its prepared statements, if false, PDO should
     * emulate prepare and bind on its behalf */
    unsigned supports_placeholders:2;

    unsigned _reserved:29;

    /* the number of columns in the result set; not valid until after
     * the statement has been executed at least once.  In some cases, might
     * not be valid until fetch (at the driver level) has been called at least once.
     * */
    int column_count;
    struct pdo_column_data *columns;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!

相关推荐:

PHP生成带参数的微信小程序的二维码

关于php-fpm的进程数管理

以上就是对于pdo结构体的梳理代码的详细内容,更多请关注其它相关文章!

相关标签: php