2
$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 の出力用に変更するにはどうすればよいですか?

すなわち。表示列の出力: id、field1、field2、field3、これらの ID、Field 1、Field 2、Field 3 を作成するにはどうすればよいですか。大文字にするだけでなく、それらが何になるかを選択してください...

4

1 に答える 1

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の3つのフィールドを持つことができます。これにより、別のクエリがミックスに追加されますが、コードを汎用にすることができます。

最後の方法は、アンダースコア(_)などの区切り文字を使用した単純な命名規則を使用してから、アンダースコアを削除してタイトルケースを適用することです。field_1は「フィールド1」になり、「user_id」は「ユーザー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);
于 2011-02-14T16:19:34.550 に答える