2012-08-28 26 views
9

thể trùng lặp:
Mysql Select Enum ValuesLàm thế nào tôi có thể nhận được các giá trị enum có thể trong cơ sở dữ liệu MySQL bằng cách sử dụng php?

tôi đã thiết lập một coloumn trong Mysql:

loại: ENUM

Length/Values: '01','02','03','04','05','06','07','08','09','10','11','12'

Tôi đang cố gắng để truy xuất những giá trị từ DB:

Tôi tìm thấy một bài với cùng một câu hỏi nhưng mã của tôi đã không làm việc

$type = $mysqli->query("SHOW COLUMNS FROM {$tableName} WHERE Field = 'type'")->fetch_object()->Type; 
     preg_match('/^enum\((.*)\)$/', $type, $matches); 
     foreach(explode(',', $matches[1]) as $value) 
     { 
      $enum[] = trim($value, "'"); 
     } 
     return $enum; 

tôi nhận được loại Text insted của ENUM

+1

[http://stackoverflow.com/questions/4644220/mysql-select-enum-values] Đây không phải là câu hỏi mới, hãy xem. [1]: http://stackoverflow.com/questions/4644220/mysql-select-enum-values ​​ – tijs

Trả lời

8

Bạn nên phân tích thông tin từ information_schema. columns bảng -

SELECT 
    column_type 
FROM 
    information_schema.columns 
WHERE 
    table_schema = 'your_schema' AND table_name = 'your_table' AND column_name = 'your_column' 

... truy vấn khác -

SELECT 
    TRIM(TRAILING ')' FROM TRIM(LEADING '(' FROM TRIM(LEADING 'enum' FROM column_type))) column_type 
FROM 
    information_schema.columns 
WHERE 
    table_schema = 'your_schema' AND table_name = 'your_table' AND column_name = 'your_column'; 

Sẽ có một cái gì đó như thế này - enum('01','02','03'). Phân tích cú pháp chuỗi này trong ứng dụng php.

+0

thanks !!! hoạt động như một nét duyên dáng – devmonster

+0

Đừng quên thêm giá trị '''', nó hiện diện hoàn toàn trong mọi enum trong MySQL. Hoặc 'NULL', nếu trường là nullable. – aib

Các vấn đề liên quan