Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Перечисление значений ENUM'а
 
 автор: Хулиган   (16.09.2006 в 23:59)   письмо автору
 
 

Имеется поле в базе. Тип ENUM. Как получить все возможные значения этого поля?
Запрос с DISTINCT по этому полю не подходит, т.к. не все возможные значения этого поля могут быть задействованы в базе.
Спасибо.

   
 
 автор: Хулиган   (17.09.2006 в 00:21)   письмо автору
 
   для: Хулиган   (16.09.2006 в 23:59)
 

нашел:
DESCRIBE `table1` `fieldName`

   
 
 автор: Хулиган   (21.09.2006 в 12:59)   письмо автору
 
   для: Хулиган   (17.09.2006 в 00:21)
 

Несколько раз сработало, а теперь поломалось. Вместо ожидаемой строки:
enum('1k','2k','3k','4k','ch')
запрос DESCRIBE `tblname` `fieldname`
возвращает ерунду: "Resource id #13"
Что это? Почему?

Этот же запрос выполняемый в phpMyAdmin, работает нормально. А из скрипта - нет.

   
 
 автор: cheops   (21.09.2006 в 13:17)   письмо автору
 
   для: Хулиган   (21.09.2006 в 12:59)
 

Если возвращается "Resource id #13", это значит вы пытаетесь использовать дескриптор, который возвращает mysql_query(), без обработки функциями mysql_result(), mysql_fetch_array() и т.п. Приведите код полностью, если поиск ошибки вызывает затруднение.

   
 
 автор: Хулиган   (21.09.2006 в 20:20)   письмо автору
 
   для: cheops   (21.09.2006 в 13:17)
 

спасибо, так и есть. Почему-то решил, что если результат - строка, то через fetch_rows не надо пускать.

              $query = "DESCRIBE `$tbl_name` `$field_name`";
              $enums = mysql_query($query);
              $row=mysql_fetch_array($enums);
              $type=$row["Type"];


А всегда ли будет соблюдаться порядок следования значений enum'a в выходной строке? Такой, какой был установлен при создании поля?

   
 
 автор: cheops   (21.09.2006 в 21:30)   письмо автору
 
   для: Хулиган   (21.09.2006 в 20:20)
 

Вы имеете ввиду SET (да, всегда), дело в том, что у ENUM может быть только одно значение из многих, в отличие от SET у которого может быть множество значений из многих.

   
 
 автор: Хулиган   (22.09.2006 в 00:03)   письмо автору
 
   для: cheops   (21.09.2006 в 21:30)
 

у меня есть несколько пар полей типа ENUM, и в каждой паре полей выбранная пара значений должна быть постоянной. Чтобы можно было однозначно сопоставить первому значению одного поля именно первое значение второго поля. Это используется например при генерации select'ов:


    <option value="1kom">1 комн. квартиры</option>
    <option value="2kom">2 комн. квартиры</option>
    <option value="3kom">3 комн. квартиры</option>

Чтобы 1kom вдруг не перескочило на 2 комн. квартиры.
Пока такого не случалось, но как я понял, лучше переделать поля на SET.

   
 
 автор: cheops   (22.09.2006 в 11:26)   письмо автору
 
   для: Хулиган   (22.09.2006 в 00:03)
 

А нет, если используете DESCRIBE для формирования тэга select, то ничего менять не нужно, значения поля ENUM будут следовать в том порядке, в котором вы задали их при определении таблицы - спонтанно поменять порядок следования они не могут, так как определяют битовую маску.

   
 
 автор: Хулиган   (22.09.2006 в 11:33)   письмо автору
 
   для: cheops   (22.09.2006 в 11:26)
 

тогда вернусь к enum.
Спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования