Помощник
|
Schema for database |
ZhukV
|
Сообщение
#1
|
||
|
|
||
|
|||
Witu |
1.6.2011, 21:23;
Ответить: Witu
Сообщение
#2
|
|
SHOW CREATE TABLE
|
|
|
ZhukV
|
Сообщение
#3
|
|
Спс, тему можно закрывать, нашел оргигнальное решение :).
SELECT * FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = '{$database_name}' AND `TABLE_NAME` = '{$table_name}';
|
|
|
ZhukV
|
Сообщение
#4
|
|
|
Вот рабочий вариант, сделан на быструю руку, так что, сильно не орать, плз =)
[PHP]/** * Get info table */ function la2schema_get_table_info($db, $table, $id_connection) { $query = mysql_query("SELECT * FROM `information_schema`.`COLUMNS` WHERE `TABLE_SCHEMA` = '{$db}' AND `TABLE_NAME` = '{$table}'", $id_connection); $table_info = array('fields' => array(), 'indexes' => array()); $flags = array(); while ($data = mysql_fetch_assoc($query)) { $table_info['fields'][$data['COLUMN_NAME']] = array(); $fields = &$table_info['fields'][$data['COLUMN_NAME']]; $temp = mysql_query("SELECT {$data['COLUMN_NAME']} FROM `{$db}`.`{$table}` LIMIT 0,1"); $fields['flags'] = explode(' ', mysql_field_flags($temp, 0)); $flags = &$fields['flags']; switch ($data['DATA_TYPE']) { case 'int': $fields['type'] = 'int'; break; case 'tinyint': $fields['type'] = 'int'; $fields['size'] = 'tiny'; break; case 'smallint': $fields['type'] = 'int'; $fields['size'] = 'small'; break; case 'bigint': $fields['type'] = 'int'; $fields['size'] = 'big'; break; case 'mediumint': $fields['type'] = 'int'; $fields['size'] = 'medium'; break; case 'float': $fields['type'] = 'float'; break; case 'double': $fields['type'] = 'double'; break; case 'text': $fields['type'] = 'text'; break; case 'mediumtext': $fields['type'] = 'text'; $fields['size'] = 'medium'; break; case 'longtext': $fields['type'] = 'text'; $fields['size'] = 'long'; break; case 'tinytext': $fields['type'] = 'text'; $fields['size'] = 'tiny'; break; case 'varchar': $fields['type'] = 'varchar'; $fields['lentgh'] = $data['CHARACTER_MAXIMUM_LENGTH']; break; case 'char': $fields['type'] = 'varchar'; $fields['length'] = $data['CHARACTER_MAXIMUM_LENGTH']; break; case 'blob': $fields['type'] = 'blob'; break; case 'longblob': $fields['type'] = 'blob'; $fields['size'] = 'long'; break; case 'mediumblob': $fields['type'] = 'blob'; $fields['size'] = 'medium'; break; case 'bigblob': $fields['type'] = 'blob'; $fields['size'] = 'big'; break; case 'date': $fields['type'] = 'varchar'; $fields['length'] = variable_get('database_get_schema_length_date', 100); break; case 'datetime': $fields['type'] = 'varchar'; $fields['length'] = variable_get('database_get_schema_length_datetime', 15); break; case 'enum': $fields['type'] = 'varchar'; $fields['length'] = 255; break; case 'set': $fields['type'] = 'varchar'; $fields['length'] = 255; break; case 'time': $fields['type'] = 'varchar'; $fields['length'] = variable_get('database_get_schema_length_time', 50); break; case 'timestamp': $fields['type'] = 'varchar'; $fields['length'] = variable_get('database_get_schema_length_timestamp', 20); break; default: $fields['type'] = $data['DATA_TYPE']; $fields['length'] = $data['CHARACTER_MAXIMUM_LENGTH']; } $fields['not null'] = $data['IS_NULLABLE'] == 'NO' ? TRUE : FALSE; if (in_array('auto_increment', $flags)) { $fields['type'] = 'serial'; } if (in_array('unsigned', $flags)) { $fields['unsigned'] = TRUE; } if (in_array('binary', $flags)) { $fields['serialize'] = TRUE; } if (!empty($data['COLUMN_DEFAULT'])) { $fields['default'] = $data['COLUMN_DEFAULT']; } else if (strlen($data['COLUMN_DEFAULT'])) { $fields['default'] = $data['COLUMN_DEFAULT']; } if (!empty($data['COLUMN_COMMENT'])) { $fields['description'] = $data['COLUMN_COMMENT']; } } $res_indexes = mysql_query("SELECT `INDEX_NAME`, `COLUMN_NAME` FROM `information_schema`.`STATISTICS` WHERE `TABLE_SCHEMA` = '{$db}' AND `TABLE_NAME` = '{$table}'") or drupal_set_message(mysql_error(), 'error'); while (list($index_name, $column_name) = mysql_fetch_array($res_indexes)) { switch ($index_name) { case 'PRIMARY': if (!isset($table_info['primary key']) || !is_array($table_info['primary key'])) { $table_info['primary key'] = array(); } $table_info['primary key'][] = $column_name; break; default: if (!isset($table_info['indexes'][$index_name]) || !is_array($table_info['indexes'][$index_name])) { $table_info['indexes'][$index_name] = array(); } $table_info['indexes'][$index_name][] = $column_name; } } $table_info['table'] = $table; return $table_info; } [/PHP] Есть некоторые прочие функции: variable_get('{VAR_NAME}', {DEFAULT_VALUE}); {DEFAULT_VALUE} оставте, а саум функцию уберите. Создает schema для использование под фраемворком Друпал 7. Но все же можно и переработать под себя.
|
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Внедрение микроразметки schema.org | 9 | kretovdima | 1829 | 30.4.2018, 15:10 автор: r0mZet |
|
Сделаю микроразметку schema.org для вашего сайта Ваши сниппеты будут выглядеть гораздо привлекательнее. |
6 | SeoInMyLife | 3149 | 23.7.2017, 12:34 автор: SeoInMyLife |
|
Внедрю разметку schema.org для вашего сайта | 0 | SeoInMyLife | 1122 | 8.7.2017, 11:37 автор: SeoInMyLife |
|
Работы по созданию разметки Schema.org | 1 | Mukis | 1055 | 27.8.2016, 15:36 автор: Mukis |
Текстовая версия | Сейчас: 29.3.2024, 15:19 |