Как я могу получить перечислимые возможные значения в базе данных MySQL?

Mixins - это концепция в программировании, в которой класс предоставляет функциональные возможности, но не предназначен для использования для создания экземпляра. Основная цель Mixins - предоставить функциональные возможности, которые являются автономными, и было бы лучше, если бы сами микстины не имели наследования с другими миксинами, а также избегали состояния. В таких языках, как Ruby, существует некоторая поддержка прямого языка, но для Python этого нет. Тем не менее, вы могли использовать многоуровневое наследование для выполнения функций, предоставляемых в Python.

Я смотрел это видео http://www.youtube.com/watch?v=v_uKI2NOLEM для понимания основ миксинов. Для новичков очень полезно понять основы миксинов и их работу, а также проблемы, с которыми вы можете столкнуться при их реализации.

Википедия по-прежнему остается лучшей: http: //en.wikipedia .org / вики / Mixin

92
задан Shamoon 28 February 2010 в 04:09
поделиться

4 ответа

ВЫБЕРИТЕ ПОДСТРОКУ (COLUMN_TYPE, 6, ДЛИНА (COLUMN_TYPE) - 6) AS val ОТ information_schema. СТОЛБЦЫ, ГДЕ TABLE_NAME = 'статьи' И COLUMN_NAME = 'состояние'

не работало бы на перечисление ('' ', X' 'XX')

0
ответ дан 24 November 2019 в 06:26
поделиться

Справочник по MySQL

Если вы хотите определить все возможные значения для столбца ENUM, используйте SHOW COLUMNS FROM tbl_name LIKE enum_col и проанализируйте определение ENUM в столбце типа вывода.

Вам нужно что-то вроде:

$sql = "SHOW COLUMNS FROM `table` LIKE 'column'";
$result = $db->query($sql);
$row = $result->fetchRow();
$type = $row['Type'];
preg_match('/enum\((.*)\)$/', $type, $matches);
$vals = explode(',', $matches[1]);

Это даст вам указанные значения. MySQL всегда возвращает их в одинарных кавычках. Одиночная кавычка в значении заменяется одиночной кавычкой. Вероятно, вы можете безопасно вызвать trim ($ val, "'") для каждого элемента массива. Вам нужно преобразовать '' только в '.

Следующее будет возвращать элементы массива $ trimmedval без кавычек:

$trimmedvals = array();
foreach($vals as $key => $value) {
$value=trim($value, "'");
$trimmedvals[] = $value;
}
29
ответ дан 24 November 2019 в 06:26
поделиться

Вы можете получить значения, запросив его следующим образом:

SELECT SUBSTRING(COLUMN_TYPE,5)
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA='databasename' 
    AND TABLE_NAME='tablename'
    AND COLUMN_NAME='columnname'

Оттуда вам нужно будет преобразовать его в массив:

  • eval прямо в массив, если вы ленивы (хотя экранирование одинарной кавычки MySQL может быть несовместимым), или
  • $ options_array = str_getcsv ($ options, ',', "'"), возможно, сработает (если вы измените подстрока, чтобы пропустить открывающую и закрывающую круглые скобки) или
  • регулярное выражение
50
ответ дан 24 November 2019 в 06:26
поделиться

Я просто хочу добавить к тому, что говорит jasonbar при запросе, например:

SHOW columns FROM table

Если вы получите результат в виде массива это будет выглядеть так:

array([0],[Field],[1],[Type],[2],[Null],[3],[Key],[4],[Default],[5],[Extra])

Где [n] и [text] дают одно и то же значение.
На самом деле не сказано ни в одной из найденных мною документации. Просто хорошо знать, что еще есть.

2
ответ дан 24 November 2019 в 06:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: