重命名php select元素的MYSQL列名

重命名php select元素的MYSQL列名,php,mysql,html,select,preg-replace,Php,Mysql,Html,Select,Preg Replace,您好,我正在构建一个html select元素,如下所示: $result = mysql_query("SHOW COLUMNS FROM table") or die(mysql_error()); echo '<select name="column" class="column">'; while ($row = mysql_fetch_array($result)) { if($row[0] == 'id' || $row[0] ==

您好,我正在构建一个html select元素,如下所示:

$result = mysql_query("SHOW COLUMNS FROM table") or die(mysql_error());
    echo '<select name="column" class="column">';
    while ($row = mysql_fetch_array($result))
    {
        if($row[0] == 'id' || $row[0] == 'tstamp' || $row[0] == 'boiler2oil')
              continue;
        echo "<option value='".$row[0]."'>".ucwords($row[0])."</option>";
    }
    echo '</select>';

我给表中的列命名的方式相当难看,带有下划线等。我如何重命名它们,以便更改“选择元素”的显示值,使更改保持不变,使其更具可读性和视觉效果。这可能吗?这会是某种preg_match/preg_replace吗?

它可能单独使用str_replace就可以完成,这比preg_replace更有效地处理像这样简单的事情。

您可以定义一个数组,该数组将columnName作为键,Name作为值显示。然后回显此数组的元素,而不是显示列名

取决于要将它们重命名为什么。是否要执行一些简单的操作,如删除下划线?有没有一个规则可以用来把它们都清理干净

如果不是,为什么不添加一个散列,其中的条目从表中的名称映射到下拉列表中要打印的名称

# map from column name to display name
$labels = array(
    'col1' => 'Column 1',
    ...
);

$result = mysql_query("SHOW COLUMNS FROM table") or die(mysql_error());
echo '<select name="column" class="column">';
while ($row = mysql_fetch_array($result))
{
    if($row[0] == 'id' || $row[0] == 'tstamp' || $row[0] == 'boiler2oil')
          continue;

    # use a more friendly name if one has been defined above in $labels
    if(array_key_exists($row[0], $labels))
          $label = $labels[$row[0]];
    else
          $label = $row[0];

    echo "<option value='".$row[0]."'>".$label."</option>";
}
echo '</select>';

哦,好的,我需要知道str_replace的目标是什么,或者它是一个通用函数吗?这应该给你足够的时间来使用:还要注意,你真的应该使用htmlentities,例如echo.htmlentities$label。;我想两者都可以,不是吗?这项任务的目标是什么?如果要显示列名,请按原样显示。如果您想要花哨的标题,那么不要使用字段名,而是将所有标题都写在模板中