我需要将我的sql数据表导出到Excel工作表,这里我提到了所有的代码,当我触发函数**exportData()**时,作为响应,我得到了一个内部服务器错误问题(500)。我不知道我出了什么问题,请帮助我解决。
public function exportData(){
$sql = "SELECT * FROM `issue recodes`";
$exe = $GLOBALS['mydatabase']->query($sql);
$rows = $exe->fetchAll(\PDO::FETCH_ASSOC);
//print_r($rows);
//define data file name
$filename = "Backup_on_".date("Ymd")."xls";
//download file
header("Content-diposition : attachment; filename = '$filename'");
header("Content-type : application/vnd.ms-excel");
//render xls data
$heading = false;
if(!empty($rows)){
// if the database has data then
foreach($rows as $value){
if(!$heading){
//Already not heading written
echo implode("\t" ,array_keys($value) . "\n" );
$heading = true;
}else{
// If heading already wrote
echo implode("\t" , array_values($value) . "\n");
}
}
return true;
}else{
// if the database has not data
}
}
字符串
等等,当我删除**header()行时,它会得到这样的错误
致命错误:未捕获的类型错误:implode():参数#2($数组)必须是类型?数组,字符串给定在C:\xampp\htdocs\mos\admin\PHP files\admin.php:114堆栈跟踪:#0 C:\xampp\htdocs\mos\admin\PHP files\admin.php(114):implode('\t','数组\n')#1 C:\xampp\htdocs\mos\admin\PHP files\export.php(5):PHI\admin\Admin->exportData()#2 {main}抛出在C:\xampp\htdocs\mos\admin\PHP files\admin. php行114
下面是调用上述exportData()**函数的export.php代码
//export issues as excel data sheet
require_once 'admin.php';
$admin = new PHI\admin\Admin();
if($admin->exportData()){
echo "downloaded";
}else{
echo "fail";
}
型
1条答案
按热度按时间d7v8vwbk1#
字符串
array_keys($value) . "\n"
创建一个字符串值(数组被 wordArray
替换,因为这是当数组被强制转换为字符串上下文时发生的事情),所以这里您将字符串作为第二个参数提供给implode
,而不是数组。这需要以相反的方式发生-首先将数组内爆,然后追加\n:
型
else分支中的另一行也是如此。
但是你应该开始使用
fputcsv
,而不是这个结构。如果任何数据字段包含分隔符\t,你的结构将创建一个错误的CSV。fputcsv
已经实现了必要的“转义”机制。