[PHP_MySQLi] Узнать тип поля

Discussion in 'PHP' started by spamoney, 17 Jul 2011.

  1. spamoney

    spamoney Elder - Старейшина

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Здравтсвуйте, как в MySQLi узнать тип определенного поля, допустим в MySQL есть:
    Code:
    mysql_field_type($result, $field_offset)
    А в MySQLi аналогичной функции я не нашел...
     
  2. Kuteke

    Kuteke Banned

    Joined:
    26 Jun 2010
    Messages:
    179
    Likes Received:
    26
    Reputations:
    6
  3. spamoney

    spamoney Elder - Старейшина

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Не то это...

    В общем сам нашел:

    http://ru.php.net/manual/ru/mysqli-result.fetch-field.php

    т.е делаем аналог mysql_field_type:

    Code:
    $result->field_seek($offset);
    $finfo = $result->fetch_field();
    echo $finfo->type;
    Но $finfo->type возвращает тип поля в числовом формате, а как сделать чтобы возвращал в текстовом, т.е string, text, int и т.д ?
     
  4. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    1. Составить список методом тыка
    2. Нагуглить
    3. Анализировать вывод команд SHOW COLUMNS или DESCRIBE
     
  5. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PHP:
    $mysql_data_type_hash = array(
        
    1=>'tinyint',
        
    2=>'smallint',
        
    3=>'int',
        
    4=>'float',
        
    5=>'double',
        
    7=>'timestamp',
        
    8=>'bigint',
        
    9=>'mediumint',
        
    10=>'date',
        
    11=>'time',
        
    12=>'datetime',
        
    13=>'year',
        
    16=>'bit',
        
    //252 is currently mapped to all text and blob types (MySQL 5.0.51a)
        
    253=>'varchar',
        
    254=>'char',
        
    246=>'decimal'
    );
     
    1 person likes this.
  6. spamoney

    spamoney Elder - Старейшина

    Joined:
    26 Dec 2006
    Messages:
    120
    Likes Received:
    7
    Reputations:
    1
    Сотставил согласно: http://php.net/manual/ru/mysqli.constants.php

    Может кому-нибудь тоже пригодится:

    PHP:
    $types=array(
      
    MYSQLI_TYPE_DECIMAL=>'decimal',
      
    MYSQLI_TYPE_NEWDECIMAL=>'numeric',
      
    MYSQLI_TYPE_BIT=>'bit',
      
    MYSQLI_TYPE_TINY=>'tinyint',
      
    MYSQLI_TYPE_SHORT=>'int',
      
    MYSQLI_TYPE_LONG=>'int',
      
    MYSQLI_TYPE_FLOAT=>'float',
      
    MYSQLI_TYPE_DOUBLE=>'double',
      
    MYSQLI_TYPE_NULL=>'default null',
      
    MYSQLI_TYPE_TIMESTAMP=>'timestamp',
      
    MYSQLI_TYPE_LONGLONG=>'bigint',
      
    MYSQLI_TYPE_INT24=>'mediumint',
      
    MYSQLI_TYPE_DATE=>'date',
      
    MYSQLI_TYPE_TIME=>'time',
      
    MYSQLI_TYPE_DATETIME=>'datetime',
      
    MYSQLI_TYPE_YEAR=>'year',
      
    MYSQLI_TYPE_NEWDATE=>'date',
      
    MYSQLI_TYPE_ENUM=>'enum',
      
    MYSQLI_TYPE_SET=>'set',
      
    MYSQLI_TYPE_TINY_BLOB=>'tinyblob',
      
    MYSQLI_TYPE_MEDIUM_BLOB=>'mediumblob',
      
    MYSQLI_TYPE_LONG_BLOB=>'longblob',
      
    MYSQLI_TYPE_BLOB=>'blob',
      
    MYSQLI_TYPE_VAR_STRING=>'varchar',
      
    MYSQLI_TYPE_STRING=>'char',
      
    MYSQLI_TYPE_GEOMETRY=>'geometry');

      function 
    get_type ($result,$offset) {
        global 
    $types;
        
    $result->field_seek($offset);
        
    $finfo $result->fetch_field();
        return 
    $types[$finfo->type];
      }
     
    #6 spamoney, 17 Jul 2011
    Last edited: 17 Jul 2011