首頁 >後端開發 >php教程 >對於pdo結構體的梳理程式碼

對於pdo結構體的梳理程式碼

不言
不言原創
2018-07-14 10:37:351390瀏覽

這篇文章主要介紹了關於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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn