2012-03-05 17 views
0

PHPを初めて使いました。私はPHPを使用してMySQLデータベースからExcelシートを生成するために次のコードを使用しています。PHPを使用してMySqlデータベースからExcelシートを生成する

<?php 
    include("../Connection/Connection.php"); 
    $db_con=new Connection(); 
    $db_con->get_connection(); //Opens a database connection. This function is contained in the Connection.php which is included above. 

    $result = mysql_query("SELECT * FROM country"); 
    if (!$result) die('Couldn\'t fetch records'); 
    $num_fields = mysql_num_fields($result); 
    $headers = array(); 

    for ($i = 0; $i < $num_fields; $i++) 
    { 
     $headers[] = mysql_field_name($result , $i); 
    } 

    $fp = fopen('php://output', 'w'); 
    if ($fp && $result) 
    { 
      header('Content-Type: text/csv'); 
      header('Content-Disposition: attachment; filename="export.csv"'); 
      header('Pragma: no-cache'); 
      header('Expires: 0'); 
      fputcsv($fp, $headers); 

      while ($row = mysql_fetch_array($result)) 
      { 
       fputcsv($fp, array_values($row)); 
      } 
      die; 
    } 
?> 

上記のコードは動作していると、それは、指定されたファイルexport.csvを生成するが、問題は、それが二回、このファイルでのMySQLから各列を生成することです。つまり、各列は2回複製されます(表示されるヘッダーは複製されません)。このコードで何が問題になっていますか?各列を正確に1回表示するためには、どのような変更を行う必要がありますか?

答えて

2

を代わりに使用してください。

mysql_fetch_arrayは、BOTH文字列インデックスと数値インデックスを使用して配列をフェッチするため、各値が2回フェッチされます。あなたのコードはmysql_fetch_assocまたはmysql_fetch_rowのいずれかで動作します。

+0

私はあなたが言ったように、それは期待通りに機能しました。御時間ありがとうございます。 – Bhavesh

関連する問題