着信するmySQLデータ型を調べて、それを「カテゴリ」(このコードではファミリと呼びます)にロールアップして、カテゴリレベルでデフォルト値を適用できるようにする単純な関数があります。とにかく、このコードは整数、文字、およびテキストのカテゴリを見つけるために正常に機能しますが、日時および小数のカテゴリでは完全に失敗します。私は私の知恵の終わりにいます。どんな助けでも大歓迎です:
public static function get_family_type ( $col_type ) {
$families = array (
'integer' => array ( 'integer', 'int', 'tinyint', 'mediumint', 'bigint' ),
'fixed' => array ( 'decimal', 'numeric' ),
'floating' => array ( 'float' , 'double' ),
'character' => array ( 'char', 'varchar' ),
'datetime' => array ( 'datetime' , 'timestamp'),
'time' => array ('time'),
'date' => array ('year'),
'text' => array ('tinytext', 'text', 'mediumtext' , 'longtext'),
'blob' => array ('blob','tinyblob','mediumblob','longblob')
);
// first get rid of any optional length parameterisation
list ( $col_type ) = explode ( "(" , $col_type , 2 );
foreach ($families as $family => $family_members) {
if ( array_search ( $col_type , $family_members , true ) ) {
return $family;
}
}
return "unknown $col_type";
}
最後の行のbackupreturnステートメントに注意してから、コードの他の場所で定義したテーブルからのこの出力を確認してください。
[18-Jun-2012 17:39:24] Getting default for family of integer
[18-Jun-2012 17:39:24] Getting default for family of text
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of integer
[18-Jun-2012 17:39:24] Getting default for family of integer
[18-Jun-2012 17:39:24] Getting default for family of unknown decimal
[18-Jun-2012 17:39:24] Getting default for family of character
[18-Jun-2012 17:39:24] Getting default for family of unknown datetime
[18-Jun-2012 17:39:24] Getting default for family of floating