我的脚本出了什么问题?

时间:2011-08-02 10:13:48

标签: php mysql sql csv

我正在尝试通过以下脚本将值插入csv文件....脚本工作正常,但在输出中,值没有按顺序正确排列..

<?php
require_once '../config.php';
$month = $_GET['month'];
$sq="select * from  employee where month ='$month'";
$sql=mysql_query($sq);

$row = array();
$row[] = 'Employee Code';
$row[] = 'Employee Name';
$row[] = 'DOJ';
$data .= join(',', $row)."\n"; // Join all values without any trailing commas 
$row = array(); // We must clear the previous values
while($rs = mysql_fetch_object($sql))
{
$row[] = $rs->employee_code;
$row[] = $rs->employee_name;
$row[] = $rs->emp_dateofjoin;
$row[] = "\n";
}
$data .= join(',', $row);

// Output the headers to download the file
header("Content-type: application/x-msdownload");
header("Content-Disposition: attachment; filename=test.csv");
header("Pragma: no-cache");
header("Expires: 0");
echo $data;
?>

这些值将添加到csv文件中,并在行的开头添加一个空白单元格。除了第一行。

2 个答案:

答案 0 :(得分:1)

甚至没有看到它,你的脚本的核心是你正在使用mysql_*函数。所以不要。您应该转到PDO(太棒了)或mysqli(好)。

除此之外,您是否考虑在查询中添加ORDER BY子句?

答案 1 :(得分:0)

我认为你也可以查看ORDER BY FIELD()DESC,也可以帮助安排你想要的任何降序。只是一个想法。

SELECT * FROM employee WHERE month = '$month' AND order by field(field1,field2,field3,field4) desc

或者您可以在foreach中使用带有正则表达式的while循环,使用ereg()来扫描字符,然后设置显示内容的时间和时间。另一种方法是将信息从最高填充元素中排序到较低的位置。