前提・実現したいこと
HTMLで商品の在庫一覧を作成しており、csv出力ボタンを押すと、レコード全件をダウンロードしたいです。
件数は250件程度で、増えても500件前後になるかと思います。
一覧表示や検索など、そのほかの部分に関しては実装でき、ダウンロード自体はできますがcsvファイルの中身が空の状態です。
該当のソースコード
PHP
1<?php 2 require_once ('DSN.php'); //get_pdo()関数を定義(接続情報) 3 date_default_timezone_set ('Asia/Tokyo'); 4 $csvname = '現在庫:' . date("Y.m.d_His"); 5 $file_path = "data/".$csvname .".csv"; 6 $export_csv_title = ["業者", "商品コード", "商品名", "単位", "入数", "発注単位", "金額", "在庫", "税率"]; 7 $export_sql = "SELECT trader, code, goods, unit, quantity, order_u, price, stock, tax FROM テーブル名"; 8 9 try{ 10 $pdo = get_pdo(); 11 }catch(PDOException $e){ 12 print('Connection failed:'.$e->getMessage()); 13 die(); 14 } 15 $stmt = $pdo->query($export_sql); 16 foreach( $export_csv_title as $key => $val ){ 17 $export_header[] = mb_convert_encoding($val, 'SJIS-win', 'UTF-8'); 18 } 19 if(touch($file_path)){ 20 $file = new SplFileObject($file_path, "w"); 21 $file->fputcsv($export_header); 22 while($rows = $stmt->fetch(PDO::FETCH_ASSOC)){ 23 mb_convert_variables('SJIS-win','UTF8',$rows); 24 $file->fputcsv($rows); 25 } 26 $pdo = null; 27 } 28 header("Content-Type: application/csv"); 29 header('Content-Length: '.filesize($file_path)); 30 header('Content-disposition: attachment; filename = "'.$csvname.'.csv"'); 31 header("Pragram:no-cache"); 32 header("Cache-Control:nocache"); 33 readfile($file_path); 34 if(!connection_aborted() || connection_status() != 0){ 35 unlink($file_path); 36 } 37
試したこと
WHEREで160件程度まで絞れば出力されてますが、それを超えるとタイトル含め空でダウンロードされます。
補足情報(FW/ツールのバージョンなど)
XAMPPでローカル環境にて勉強中。
MariaDB
PHP/7.3.12
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/04/08 00:23