excel导出无法从mysql获取太多数据

我有一个代码,从MySQL获取数据与PHP和出口到Excel文件,其中:

<?php $xls_filename = "export_".rand(100000,999999).".xls"; // Define Excel (.xls) file name // Header info settings header("Content-Type: application/xls"); header("Content-Disposition: attachment; filename=$xls_filename"); header("Pragma: no-cache"); header("Expires: 0"); /***** Start of Formatting for Excel *****/ // Define separator (defines columns in excel &amp; tabs in word) $sep = "\t"; // tabbed character $slct2 = $dbh->prepare("SELECT * FROM forms_answers WHERE ans_formid='{$identity}'"); $slct2->execute(); while($name = $slct2->fetch(PDO::FETCH_ASSOC)) { $stmt2 = $dbh->prepare("SELECT * FROM forms_answers_details WHERE ans_id='{$name['ans_id']}'"); $stmt2->execute(); // Start of printing column names as names of MySQL fields for($i=0; $i<$stmt2->columnCount(); $i++) { echo $stmt2->getColumnMeta($i)."\t"; } print("\n"); // End of printing column names // Start while loop to get data while($row = $stmt2->fetch(PDO::FETCH_ASSOC)) { $schema_insert = ""; for($j=0; $j<$stmt2->columnCount(); $j++) { if(!isset($row[$j])) { $schema_insert .= "NULL".$sep; } elseif(isset($row[$j])) { $schema_insert .= "$row[$j]".$sep; } else { $schema_insert .= "".$sep; } } $schema_insert = str_replace($sep."$", "", $schema_insert); $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); $schema_insert .= "\t"; print(trim($schema_insert)); print "\n"; } } ?> 

但问题是这个代码只是输出数据到一个扩展名,可以说几乎输出一个8 * 20的excel表并且不能输出超过这个限制的数据。 而是导出Array,NULL和页面代码。 任何人都可以build议我该怎么办才能解决这个问题?

$ slct2 = $ dbh-> prepare(“SELECT * FROM forms_answers WHERE ans_formid ='{$ identity}'LIMIT 1000”);

$ stmt2 = $ dbh-> prepare(“SELECT * FROM forms_answers_details WHERE ans_id ='{$ name ['ans_id']}'LIMIT 1000”);

试试这个可能是Db服务器设置的限制。

根据数据更改限制

否则由于内存和执行时间不足,还有另一种可能性,即进程中断。

尝试这两条线

函数ini_set( '的max_execution_time',300);
函数ini_set( 'memory_limit的', '512M')

把这两行放在取数据之前;

它会帮助你。