【问题标题】:How to populate <select> with ENUM values?如何用 ENUM 值填充 <select>?
【发布时间】:2012-06-05 04:52:39
【问题描述】:

我想使用 PHP 和 PHP 数据对象 (PDO) 使用 MySQL 数据库中的 ENUM 字段中的选项填充 HTML &lt;select&gt;。我该怎么做?

【问题讨论】:

    标签: php mysql database pdo


    【解决方案1】:

    原版 PHP 实现:

    <select>
    <?
        $result = mysql_query('SHOW COLUMNS FROM '.$table_name.' WHERE field="'.$column_name.'"');
        while ($row = mysql_fetch_row($result)) {
                foreach(explode("','",substr($row[1],6,-2)) as $option) {
                    print("<option>$option</option>");
                }
            }
    ?>
    <select>
    

    PHP 数据对象实现

    <select>
    <?
        $sql = 'SHOW COLUMNS FROM '.$table_name.' WHERE field="'.$column_name.'"';
        $row = $db->query($sql)->fetch(PDO::FETCH_ASSOC);
        foreach(explode("','",substr($row['Type'],6,-2)) as $option) {
                print("<option>$option</option>");
            }
    ?>
    </select>
    

    【讨论】:

    【解决方案2】:

    这是另一种解决方案,当您想将枚举值放入数组中以根据需要使用时,您可以将其用作辅助函数。

    public static function getSQLEnumArray($table, $field, $db){
        $row = $db->query("SHOW COLUMNS FROM ".$table." LIKE ".$field)->fetch(PDO::FETCH_ASSOC);
        preg_match_all("/'(.*?)'/", $row['Type'], $categories);
        $fields = $categories[1];
        return $fields;
    }
    

    【讨论】:

    • 很棒的功能!但我需要 $field 周围的引号: $row = $db->query("SHOW COLUMNS FROM ".$table." LIKE '".$field."')->fetch(PDO::FETCH_ASSOC);
    猜你喜欢
    • 1970-01-01
    • 2012-05-31
    • 2018-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多