PMA\libraries\dbi\DBIMysqli::getFieldsMeta PHP Метод

getFieldsMeta() публичный Метод

returns metainfo for fields in $result
public getFieldsMeta ( mysqli_result $result ) : array
$result mysqli_result result set identifier
Результат array meta info for fields in $result
    public function getFieldsMeta($result)
    {
        // Build an associative array for a type look up
        $typeAr = array();
        $typeAr[MYSQLI_TYPE_DECIMAL] = 'real';
        $typeAr[MYSQLI_TYPE_NEWDECIMAL] = 'real';
        $typeAr[MYSQLI_TYPE_BIT] = 'int';
        $typeAr[MYSQLI_TYPE_TINY] = 'int';
        $typeAr[MYSQLI_TYPE_SHORT] = 'int';
        $typeAr[MYSQLI_TYPE_LONG] = 'int';
        $typeAr[MYSQLI_TYPE_FLOAT] = 'real';
        $typeAr[MYSQLI_TYPE_DOUBLE] = 'real';
        $typeAr[MYSQLI_TYPE_NULL] = 'null';
        $typeAr[MYSQLI_TYPE_TIMESTAMP] = 'timestamp';
        $typeAr[MYSQLI_TYPE_LONGLONG] = 'int';
        $typeAr[MYSQLI_TYPE_INT24] = 'int';
        $typeAr[MYSQLI_TYPE_DATE] = 'date';
        $typeAr[MYSQLI_TYPE_TIME] = 'time';
        $typeAr[MYSQLI_TYPE_DATETIME] = 'datetime';
        $typeAr[MYSQLI_TYPE_YEAR] = 'year';
        $typeAr[MYSQLI_TYPE_NEWDATE] = 'date';
        $typeAr[MYSQLI_TYPE_ENUM] = 'unknown';
        $typeAr[MYSQLI_TYPE_SET] = 'unknown';
        $typeAr[MYSQLI_TYPE_TINY_BLOB] = 'blob';
        $typeAr[MYSQLI_TYPE_MEDIUM_BLOB] = 'blob';
        $typeAr[MYSQLI_TYPE_LONG_BLOB] = 'blob';
        $typeAr[MYSQLI_TYPE_BLOB] = 'blob';
        $typeAr[MYSQLI_TYPE_VAR_STRING] = 'string';
        $typeAr[MYSQLI_TYPE_STRING] = 'string';
        // MySQL returns MYSQLI_TYPE_STRING for CHAR
        // and MYSQLI_TYPE_CHAR === MYSQLI_TYPE_TINY
        // so this would override TINYINT and mark all TINYINT as string
        // https://sourceforge.net/p/phpmyadmin/bugs/2205/
        //$typeAr[MYSQLI_TYPE_CHAR]        = 'string';
        $typeAr[MYSQLI_TYPE_GEOMETRY] = 'geometry';
        $typeAr[MYSQLI_TYPE_BIT] = 'bit';
        $typeAr[MYSQLI_TYPE_JSON] = 'json';
        $fields = mysqli_fetch_fields($result);
        // this happens sometimes (seen under MySQL 4.0.25)
        if (!is_array($fields)) {
            return false;
        }
        foreach ($fields as $k => $field) {
            $fields[$k]->_type = $field->type;
            $fields[$k]->type = $typeAr[$field->type];
            $fields[$k]->_flags = $field->flags;
            $fields[$k]->flags = $this->fieldFlags($result, $k);
            // Enhance the field objects for mysql-extension compatibility
            //$flags = explode(' ', $fields[$k]->flags);
            //array_unshift($flags, 'dummy');
            $fields[$k]->multiple_key = (int) (bool) ($fields[$k]->_flags & MYSQLI_MULTIPLE_KEY_FLAG);
            $fields[$k]->primary_key = (int) (bool) ($fields[$k]->_flags & MYSQLI_PRI_KEY_FLAG);
            $fields[$k]->unique_key = (int) (bool) ($fields[$k]->_flags & MYSQLI_UNIQUE_KEY_FLAG);
            $fields[$k]->not_null = (int) (bool) ($fields[$k]->_flags & MYSQLI_NOT_NULL_FLAG);
            $fields[$k]->unsigned = (int) (bool) ($fields[$k]->_flags & MYSQLI_UNSIGNED_FLAG);
            $fields[$k]->zerofill = (int) (bool) ($fields[$k]->_flags & MYSQLI_ZEROFILL_FLAG);
            $fields[$k]->numeric = (int) (bool) ($fields[$k]->_flags & MYSQLI_NUM_FLAG);
            $fields[$k]->blob = (int) (bool) ($fields[$k]->_flags & MYSQLI_BLOB_FLAG);
        }
        return $fields;
    }