function GetTableColumns($table)
 {
     static $tables_columns = array();
     if (!array_key_exists($table, $tables_columns)) {
         $cmd = new DBCommand("SHOW COLUMNS FROM @tbname");
         $cmd->Add('@tbname', DB_TableName, $table);
         $res = DB::GetAll($cmd);
         $fields = array();
         foreach ($res as $row) {
             $type = $row['Type'];
             if (strpos($type, '(') !== false) {
                 $typename = substr($type, 0, strpos($type, '('));
                 $type = substr($type, strpos($type, '(') + 1);
                 if (strpos($type, ')') !== false) {
                     $size = intval(substr($type, 0, strpos($type, ')')));
                 } else {
                     $size = 255;
                 }
             } else {
                 $typename = $type;
                 $size = 255;
             }
             switch ($typename) {
                 case 'varchar':
                     $tp = DB_String;
                     break;
                 case 'tinyint':
                     $tp = DB_Int;
                     break;
                 case 'text':
                     $tp = DB_Blob;
                     break;
                 case 'date':
                     $tp = DB_Date;
                     break;
                 case 'smallint':
                     $tp = DB_Int;
                     break;
                 case 'mediumint':
                     $tp = DB_Int;
                     break;
                 case 'int':
                     $tp = DB_Int;
                     break;
                 case 'bigint':
                     $tp = DB_Int;
                     break;
                 case 'float':
                     $tp = DB_Float;
                     break;
                 case 'double':
                     $tp = DB_Float;
                     break;
                 case 'decimal':
                     $tp = DB_Float;
                     break;
                 case 'datetime':
                     $tp = DB_DateTime;
                     break;
                 case 'timestamp':
                     StrikeError('DB::GetTableColumns : TODO: check mysql manual for \'timestamp\'');
                     break;
                 case 'time':
                     StrikeError('DB::GetTableColumns : TODO: check mysql manual for \'time\'');
                     break;
                 case 'year':
                     StrikeError('DB::GetTableColumns : TODO: check mysql manual for \'year\'');
                     break;
                 case 'char':
                     $tp = DB_String;
                     break;
                 case 'tinyblob':
                     $tp = DB_Blob;
                     break;
                 case 'tinytext':
                     $tp = DB_Blob;
                     break;
                 case 'blob':
                     $tp = DB_Blob;
                     break;
                 case 'mediumblob':
                     $tp = DB_Blob;
                     break;
                 case 'mediumtext':
                     $tp = DB_Blob;
                     break;
                 case 'longblob':
                     $tp = DB_Blob;
                     break;
                 case 'longtext':
                     $tp = DB_Blob;
                     break;
                 case 'enum':
                     StrikeError('DB::GetTableColumns : unsupported type \'enum\'');
                     break;
                 case 'set':
                     StrikeError('DB::GetTableColumns : TODO: check mysql manual for \'set\'');
                     break;
                 default:
                     StrikeError('DB::GetTableColumns : unknown field type \'' . $typename . '\'');
             }
             $fields[$row['Field']] = array('t' => $tp, 's' => $size);
         }
         $tables_columns[$table] = $fields;
     }
     return $tables_columns[$table];
 }
 /**
  * @static
  */
 function RemoveByID($classname, $id)
 {
     eval('$tmp = new ' . $classname . '();');
     $tmp->_db_Init();
     $cmd = new DBCommand("DELETE FROM @_db_table WHERE id=@id");
     $cmd->Add('@_db_table', DB_TableName, $tmp->_db_table);
     $cmd->Add('@id', DB_Int, $id);
     DB::Execute($cmd);
 }