从 PHP 5 更改为 PHP 7 后生成 .xls 时出现问题

问题描述 投票:0回答:2

我最近从 PHP 5.6 切换到 PHP7。以前在 PHP 5.6 中运行良好的 PHP 脚本现在在 PHP 7 中“复制列数据”。我不明白为什么。代码: function cleanData(&$str) { $str = preg_replace("/\t/", "\t", $str); $str = preg_replace("/\r?\n/", "\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; // force certain number/date formats to be imported as strings if(preg_match("/^0/", $str) || preg_match("/^+?\d{8,}$/", $str) || preg_match("/^\d{4}.\d{1,2}.\d{1,2}/", $str)) { $str = "'$str"; } } $day_num = date(d); $month_num = date(n); $year_num = date(Y); // file name for download $filename = "Subscriber_list_" . $month_num . "-" . $day_num . "-" . $year_num . ".xls"; header("Content-Type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=\"$filename\""); header('Cache-Control: max-age=0'); echo "ID \t Title \t First Name \t Last Name \t E-Mail \n"; $news_query = mysqli_query("SELECT DISTINCT id, title,firstname, lastname, email FROM users WHERE newsletter = 1 "); while($row =mysqli_fetch_array($news_query, MYSQL_ASSOC)) { array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\n"; } exit;

数据库相当标准。预先感谢。

php mysqli php-7 xls
2个回答
0
投票
MYSQL_ASSOC

常量而不是

MYSQLI_ASSOC

当您使用 PHP 5 时,这个拼写错误发生了,因为这两个常量具有相同的值。但由于 MYSQL 扩展已被删除,

MYSQL_ASSOC

常量在 PHP 7 中是

undefined
,因此 mysqli_fetch_array 遵循获取数字键和关联键的默认行为,因此出现重复的列。
    


0
投票

<pre> function fetch_assoc($result) { return mysqli_fetch_assoc($result); } </pre>

© www.soinside.com 2019 - 2024. All rights reserved.