为php select元素重命名MYSQL列名

时间:2011-01-25 11:40:06

标签: php mysql html select preg-replace

嗨我正在构建一个像这样的html选择元素:

$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吗?

3 个答案:

答案 0 :(得分:1)

它可以单独使用str_replace完成,对于像这样的简单事情,这比preg_replace更有效。

答案 1 :(得分:1)

取决于您要将其重命名为。你想做一些简单的事情,比如删除下划线吗?是否有规则可以用来清理它们?

如果没有,为什么不添加一个哈希,其条目从表中的名称映射到您要为下拉列表打印出来的名称?

# 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>';

答案 2 :(得分:0)

您可以定义一个数组,其中columnName为“key”,Name为Display显示为“value”。然后是这个数组的Echo元素而不是显示列名。