MySQL 8.0 C API Developer Guide
        The buffer_type member of
        MYSQL_BIND structures indicates the data type
        of the C language variable bound to a statement parameter or
        result set column. For input, buffer_type
        indicates the type of the variable containing the value to be
        sent to the server. For output, it indicates the type of the
        variable into which a value received from the server should be
        stored.
      
        The following table shows the permissible values for the
        buffer_type member of
        MYSQL_BIND structures for input values sent
        to the server. The table shows the C variable types that you can
        use, the corresponding type codes, and the SQL data types for
        which the supplied value can be used without conversion. Choose
        the buffer_type value according to the data
        type of the C language variable that you are binding. For the
        integer types, you should also set the
        is_unsigned member to indicate whether the
        variable is signed or unsigned.
      
Table 6.1 Permissible Input Data Types for MYSQL_BIND Structures
| Input Variable C Type | buffer_typeValue | SQL Type of Destination Value | 
|---|---|---|
| signed char | MYSQL_TYPE_TINY | TINYINT | 
| short int | MYSQL_TYPE_SHORT | SMALLINT | 
| int | MYSQL_TYPE_LONG | INT | 
| long long int | MYSQL_TYPE_LONGLONG | BIGINT | 
| float | MYSQL_TYPE_FLOAT | FLOAT | 
| double | MYSQL_TYPE_DOUBLE | DOUBLE | 
| MYSQL_TIME | MYSQL_TYPE_TIME | TIME | 
| MYSQL_TIME | MYSQL_TYPE_DATE | DATE | 
| MYSQL_TIME | MYSQL_TYPE_DATETIME | DATETIME | 
| MYSQL_TIME | MYSQL_TYPE_TIMESTAMP | TIMESTAMP | 
| char[] | MYSQL_TYPE_STRING | TEXT,CHAR,VARCHAR | 
| char[] | MYSQL_TYPE_BLOB | BLOB,BINARY,VARBINARY | 
| MYSQL_TYPE_NULL | NULL | 
        Use MYSQL_TYPE_NULL as indicated in the
        description for the is_null member in
        Section 6.2, “C API Prepared Statement Data Structures”.
      
        For input string data, use MYSQL_TYPE_STRING
        or MYSQL_TYPE_BLOB depending on whether the
        value is a character (nonbinary) or binary string:
      
            MYSQL_TYPE_STRING indicates character
            input string data. The value is assumed to be in the
            character set indicated by the
            character_set_client system
            variable. If the server stores the value into a column with
            a different character set, it converts the value to that
            character set.
          
            MYSQL_TYPE_BLOB indicates binary input
            string data. The value is treated as having the
            binary character set. That is, it is
            treated as a byte string and no conversion occurs.
          
        The following table shows the permissible values for the
        buffer_type member of
        MYSQL_BIND structures for output values
        received from the server. The table shows the SQL types of
        received values, the corresponding type codes that such values
        have in result set metadata, and the recommended C language data
        types to bind to the MYSQL_BIND structure to
        receive the SQL values without conversion. Choose the
        buffer_type value according to the data type
        of the C language variable that you are binding. For the integer
        types, you should also set the is_unsigned
        member to indicate whether the variable is signed or unsigned.
      
Table 6.2 Permissible Output Data Types for MYSQL_BIND Structures
| SQL Type of Received Value | buffer_typeValue | Output Variable C Type | 
|---|---|---|
| TINYINT | MYSQL_TYPE_TINY | signed char | 
| SMALLINT | MYSQL_TYPE_SHORT | short int | 
| MEDIUMINT | MYSQL_TYPE_INT24 | int | 
| INT | MYSQL_TYPE_LONG | int | 
| BIGINT | MYSQL_TYPE_LONGLONG | long long int | 
| FLOAT | MYSQL_TYPE_FLOAT | float | 
| DOUBLE | MYSQL_TYPE_DOUBLE | double | 
| DECIMAL | MYSQL_TYPE_NEWDECIMAL | char[] | 
| YEAR | MYSQL_TYPE_SHORT | short int | 
| TIME | MYSQL_TYPE_TIME | MYSQL_TIME | 
| DATE | MYSQL_TYPE_DATE | MYSQL_TIME | 
| DATETIME | MYSQL_TYPE_DATETIME | MYSQL_TIME | 
| TIMESTAMP | MYSQL_TYPE_TIMESTAMP | MYSQL_TIME | 
| CHAR,BINARY | MYSQL_TYPE_STRING | char[] | 
| VARCHAR,VARBINARY | MYSQL_TYPE_VAR_STRING | char[] | 
| TINYBLOB,TINYTEXT | MYSQL_TYPE_TINY_BLOB | char[] | 
| BLOB,TEXT | MYSQL_TYPE_BLOB | char[] | 
| MEDIUMBLOB,MEDIUMTEXT | MYSQL_TYPE_MEDIUM_BLOB | char[] | 
| LONGBLOB,LONGTEXT | MYSQL_TYPE_LONG_BLOB | char[] | 
| BIT | MYSQL_TYPE_BIT | char[] |