我有一個資料庫表,其中除了 id 列所有列都有逗號分隔值,我試圖根據 id 下載資料,所以我做了以下代碼:
看法:
<a href="<?php echo base_url('admin_works/downloadexcel/'.$val['id']);?>" style="margin-left:7%">
<i class="fa fa-file-excel-o" aria-hidden="true" style="color:green"></i>
</a>
控制器:
public function downloadexcel(){
$this->load->helper('file');
$this->load->helper('download');
// file name
$filename = 'users_'.date('Ymd').'.csv';
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/csv; ");
// get data
$eid = $this->uri->segment(3);
$response = $this->db->where("id", $eid)->get('tbl_plans')->result();
// file creation
$file = fopen('php://output', 'w');
$header = array("Table ID","Date","Topic","Name","Client ID","Type","Reference","Status","Assigned","Image URL","Remarks","Captions");
fputcsv($file, $header);
foreach ($response as $val){
$s1=explode(',',$val->ddate);
$s2=explode(',',$val->details);
$s3=explode(',',$val->type);
$s4=explode(',',$val->ref);
$s5=explode(',',$val->status);
$s6=explode(',',$val->assign);
$s7=explode(',',$val->imageurl);
$s8=explode(',',$val->remarks);
$s9=explode(',',$val->captions);
for($i=1;$i<10;$i ){
for($j=1;$j<10;$j ){
$var = 's'.$j;
$newArr[] = $$var[$i]??'';
}
fputcsv($file,$newArr);
}
}
fclose($file);
exit;
}
但是這給了我空白檔案,誰能告訴我這里有什么問題,提前謝謝
uj5u.com熱心網友回復:
for($i=0;$i<count($s1);$i ){
$newArr=[];
for($j=1;$j<12;$j ){
$var = 's'.$j;
$newArr[] = $$var[$i]??'';
}
fputcsv($file,$newArr);
}
uj5u.com熱心網友回復:
這應該是一個評論,但空間有限。
我有一個資料庫表,其中除了 id 列所有列都有逗號分隔值
那么你是從一個非常糟糕的地方開始的。除非這類似于 sleepycat 或 memcache,否則您不應該將 CSV 格式的資料存盤在資料庫中。但是,該代碼看起來很像損壞的 SQL,在這種情況下,我們沒有理由將 CSV 放在那里。
誰能告訴我這里有什么問題
是的,PHP 已經在告訴你,但你沒有在聽。查看您的錯誤記錄/報告。
這給了我空白檔案
如果確實是這種情況并且正在創建一個檔案并且您甚至沒有獲得列標題,那么您會遇到與 PHP 通常運行的維度不同的問題。與驅魔師/薩滿交談。
如果每次運行時都沒有重新創建檔案,請檢查您的錯誤記錄/報告和檔案系統權限。
如果正在重新創建檔案并且它包含標題行,那么您的代碼中存在問題 - 因為您不斷更改您發布的代碼,所以列舉這些沒有多大意義 - 但其中大部分將由 PHP 報告為錯誤/警告.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/525720.html
