[英]creating a CSV file from MySQL Table data in PHP
我在PHP中有这个代码:
// output headers so that the file is downloaded rather than displayed
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=calls.csv');
// create a file pointer connected to the output stream
$output = fopen($_SERVER["DOCUMENT_ROOT"].'/file_dump/price_tariffs/calls.csv', 'w');
// output the column headings
fputcsv($output, array('Column 1', 'Column 2'));
// loop over the rows, outputting them
$sql="SELECT * from call_costs where sequence < '50' ";
$rs=mysql_query($sql,$conn);
while($result = mysql_fetch_array($rs)) {
fputcsv($output, $result["number"]);
}
它在price_tariffs目录中创建文件名calls.csv,但它只添加第1列和第2列而不是while循环中的数据
我检查循环并回显循环内的数据,显示正常
fputcsv将第二个参数作为一个数组(),“你已经在循环之外使用了fputcsv,将第二个参数传递为一个数组”[*],里面有两个值。 尝试在循环中做同样的事情:
fputcsv($output, array($result["number"], $result["somethingelse"]));
[*]:在下面的评论中澄清之后编辑,添加了引用的句子。
仅选择所需的列:
$sql = "SELECT column1, column2 FROM call_costs WHERE sequence < '50'";
然后使用mysql_fetch_assoc()
将每一行作为关联数组获取,并输出:
$rs=mysql_query($sql,$conn);
while($row = mysql_fetch_assoc($rs)) {
fputcsv($output, $row);
}
fputcsv()
的第二个参数应该是应该放入CSV文件中的字段的值的数组。
因为你直接将数据发送到客户端,你应该回应而不是将它保存到文件中:)改为打开php://output
:
试试这个(来自powtacs回答 :
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=calls.csv');
// create a file pointer connected to the output stream
$output = fopen('php://output', 'w');
// output the column headings
fputcsv($output, array('Column 1', 'Column 2'));
// loop over the rows, outputting them
$sql="SELECT * from call_costs where sequence < '50' ";
$rs=mysql_query($sql,$conn);
while($result = mysql_fetch_assoc($rs)) {
fputcsv($output, $result);
}
另请注意,mysql已弃用,您应该使用mysql i或PDO
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.