Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php将数据从sql导出到excel_Php_Mysql_Sql_Excel_Mysqli - Fatal编程技术网

使用php将数据从sql导出到excel

使用php将数据从sql导出到excel,php,mysql,sql,excel,mysqli,Php,Mysql,Sql,Excel,Mysqli,我正在尝试用php将sql导出到csv,这就是我设法做到的。它在没有两件事情的情况下运行良好: 1.在csv中输出sql数据之前,出于某种原因,我得到了当前页面的HTML代码。 2.如何更改表格标题行?要重命名csv中的表格标题列 $result = $db->query("SELECT * FROM user_history WHERE member_id = '$user_id'"); $num_fields = $result->field_count; $headers =

我正在尝试用php将sql导出到csv,这就是我设法做到的。它在没有两件事情的情况下运行良好: 1.在csv中输出sql数据之前,出于某种原因,我得到了当前页面的HTML代码。 2.如何更改表格标题行?要重命名csv中的表格标题列

$result = $db->query("SELECT * FROM user_history WHERE member_id = '$user_id'");
$num_fields = $result->field_count;
$headers = array();
$headers[] = "Number";
for($i = 0; $i < $num_fields; $i++ ) {
    $Obj = $result->fetch_field_direct($i);
    $headers[] = $Obj->name."\t";
}
$current_date = date("y/m/d");
$filename = "MyFileName" . $current_date . ".csv";
$fp = fopen('php://output', 'w');
if ($fp && $result) {
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename='.$filename);
    header('Pragma: no-cache');
    header('Expires: 0');
    echo "Title of Your CSV File\n\n";
    // Write mysql headers to csv
    fputcsv($fp, $headers);
    $row_tally = 0;
    // Write mysql rows to csv
    while ($row = $result->fetch_array(MYSQLI_NUM)) {
    $row_tally = $row_tally + 1;
    echo $row_tally.",";
        fputcsv($fp, array_values($row));
    }
    die;
}
$result=$db->query(“从用户历史记录中选择*,其中成员\u id='$user\u id'”);
$num\u fields=$result->field\u count;
$headers=array();
$headers[]=“编号”;
对于($i=0;$i<$num_字段;$i++){
$Obj=$result->fetch\u field\u direct($i);
$headers[]=$Obj->name.“\t”;
}
$current_date=日期(“y/m/d”);
$filename=“MyFileName”$当前日期。“.csv”;
$fp=fopen('php://output","w",;
如果($fp&&$result){
标题(“内容类型:文本/csv”);
标题('Content-Disposition:attachment;filename='。$filename);
标题('Pragma:no cache');
标题('Expires:0');
echo“您的CSV文件的标题\n\n”;
//将mysql头写入csv
fputcsv($fp,$headers);
$row_tally=0;
//将mysql行写入csv
而($row=$result->fetch_数组(MYSQLI_NUM)){
$row\U tally=$row\U tally+1;
echo$row_tally.“,”;
fputcsv($fp,数组_值($row));
}
死亡
}

fetch\u field\u direct
返回一个不带\u toString()方法的对象。根据需要更改代码:

$header .= $result->fetch_field_direct($i)."\\t";
致:


第二,如果您打印“\\t”,您将得到\t<代码>打印“\t”将为您提供制表符。

那么,如果执行
$header.=$result->fetch\u field\u direct($i),会发生什么情况?“\t”如该问题所示?将所有
\\n
更改为
\n
“\\t”
更改为
“\t”
“\\r”
更改为
“\r”
@Fred ii-同样的事情。相应地进行了更改,但现在我得到了
注意:未定义的变量:header
通过在此之前声明header和数据来修复它,此时会出现一个带有reports.xls的下载框,但内容不正常,它以不可读的样式打印出当前页面的内容和查询中的数据。信息技术这就像一个编码截屏。请确保将“\t”和“\n”连接起来,而不是“\\t”和“\\n”。嘿,我更新了,尝试使用另一个脚本,但遇到了更新1和2时出现的问题。
$Obj = $result->fetch_field_direct($i);
$header .= $Obj->name."\t";