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); }