更改mysql列名以与FPutCSV()一起使用

时间:2011-02-14 16:14:46

标签: php mysql fputcsv

$result = mysql_query("show columns from mash");
for ($i = 0; $i < mysql_num_rows($result); $i++) {
    $colArray[$i] = mysql_fetch_assoc($result);
    $fieldArray[$i] = $colArray[$i]['Field'];
}
fputcsv($fp,$fieldArray);

获取mysql列名,然后在创建的CSV顶部输出它们。

但是,我知道列名是什么,如何在CSV中为输出更改它们?

IE中。如果显示列输出:id,field1,field2,field3,我如何制作这些ID,字段1,字段2,字段3.不仅仅是大写,而是选择它们将会是什么......

1 个答案:

答案 0 :(得分:1)

你必须要有一个列到标签的列表,这将使脚本特定于数据库:

$labels = array(
  'col_name'=>'Column 1',
  'id'=>'User ID'
); // and so on

$result = mysql_query("show columns from mash");
for ($i = 0; $i < mysql_num_rows($result); $i++) {
    $colArray[$i] = mysql_fetch_assoc($result);
    $fieldArray[$i] = $labels[$colArray[$i]['Field']];
}
fputcsv($fp,$fieldArray);

或者,您必须使用此类元数据创建数据库。它可以有三个字段:source_table,source_column,column_label。这为混合添加了另一个查询,但允许代码变得通用。

最后一种方法是使用一些带分隔符的简单命名约定,如下划线(_),然后删除下划线并应用标题大小写。 field_1变为“Field 1”,“user_id”变为“User Id”,依此类推。

$result = mysql_query("show columns from mash");
for ($i = 0; $i < mysql_num_rows($result); $i++) {
    $colArray[$i] = mysql_fetch_assoc($result);
    $fieldArray[$i] = _title_case_function_(str_replace('_', ' ', $colArray[$i]['Field']]));
}
fputcsv($fp,$fieldArray);