※ ChatGPTを利用し、要約された質問です(原文:CSVに項目(カラム名)を)
CSV形式のデータをダウンロードする際に項目名を1行目に表示したい方法について
このQ&Aのポイント
データベースからCSV形式のファイルをダウンロードする際、項目名を1行目に表示する方法についてアドバイスをお願いします。
現在の実装では項目名が行単位で表示されてしまいます。他の方法を教えていただけると助かります。
解決策をご教示いただければと思います。お忙しい中、よろしくお願いいたします。
お世話になっております。
データベースにあるデータをCSV形式のファイルとしてダウンロードすべく、以下のようなソースを記述しておりますが、そのデータに項目名(カラム名)を共に表示(挿入)させようとすると、項目名が行単位で表示されてしまいます。
//$str .= "ID,E-Mail,password,氏名,郵便番号,都道府県,住所,TEL,FAX,URL\n";
$sql= "SELECT * FROM member order by id";
$res = mysql_query($sql, $con) or die("検索に失敗しました");
while($row = mysql_fetch_array($res, MYSQL_ASSOC)){
$str = $row["id"].",".$row["mail"].",".$row["pass"].",";
$str .= $row["name"].",".$row["post_no"].",";
$str .= $row["address1"].",".$row["address2"].",";
$str .= $row["tel"].",".$row["fax"].",".$row["url"];
1行目だけに項目名を表示させたいので、whileの始まる前にカラム名を$strに代入したのですが、考え方として他にどうすれば宜しいのでしょうか?
お忙し中恐縮ですが、アドバイスのほど頂戴出来れば幸いです。宜しくお願い申し上げます。
お礼
yambejp様 お世話になっております。早々のアドバイスをありがとうございます。 (こちらからのご挨拶が遅れて申し訳ありません) >としたら$strは毎回上書きされるので最終行しか拾えなくないですか? 確かに言われてみればそうなのですが、上書きされずに正常にデータ順に出力しています。 while($row = mysql_fetch_array($res, MYSQL_ASSOC)){ $str .= $row["id"].",".$row["mail"].",".$row["pass"].","; $str .= ・・・ } とやってみると、イメージ的に 1 1 2 1 2 3 1 2 3 4 といった感じになってしまします。 いずれにせよ、 >もしくはヘッダは$headerにいれといて、出力の際に、$headerと >$strを出力するとかもありかと こちらのやり方で上手く行きました。ありがとうございました!