用PHPExcel制作Excel文件,每列写两次

用PHPExcel制作Excel文件,每列写两次,php,mysql,while-loop,phpexcel,Php,Mysql,While Loop,Phpexcel,解决方法如下: 我只需要换一行 while ($row = mysql_fetch_array($result)) { 到 我使用PHPExcel从mySQL数据库中提取数据来创建XLS文件。我正在写两个专栏:标题和视图。(标题是db表中的实际列,视图是每个标题在表中出现的次数计数) 数据写入XLS文件,问题是每列写入两次: |-------A-------B-------C-------D-------| 5--标题--|--视图---| 6---标题1----标题1----标题3----

解决方法如下: 我只需要换一行

while ($row = mysql_fetch_array($result)) {


我使用PHPExcel从mySQL数据库中提取数据来创建XLS文件。我正在写两个专栏:标题和视图。(标题是db表中的实际列,视图是每个标题在表中出现的次数计数)

数据写入XLS文件,问题是每列写入两次:

|-------A-------B-------C-------D-------|
5--标题--|--视图---|
6---标题1----标题1----标题3----标题3-------|
7---标题2----标题2----标题6----标题6-------|
8---标题3----标题3----标题4----标题4-------|

如何修复此问题,使其每列显示一次

我的代码:

$sql = "
    SELECT
      titles.title,
      COUNT(DISTINCT history.id) AS `count`
    FROM
      user_history titles
    LEFT OUTER JOIN
      user_history history
    ON
      titles.title = history.title
    ";


    $sql .= "
    GROUP BY 
      titles.title
    ORDER BY 
      titles.title
    ";

    $result = mysql_query($sql);
$headings = array('Title', 'Views');

if ($result = mysql_query($sql) or die(mysql_error())) {


    $rowNumber = 5;
    $col = 'A';
    foreach($headings as $heading) {
       $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$heading);
       $col++;
    }

    // Loop through the result set
    $rowNumber = 6;
    while ($row = mysql_fetch_array($result)) {
       $col = 'A';
       foreach($row as $cell) {
          $objPHPExcel->getActiveSheet()->setCellValue($col.$rowNumber,$cell);
          $col++;
       }
       $rowNumber++;
    }

因为你的加入是无损的

您将获得两次冗余信息

只需对您的查询执行以下操作:

SELECT
  titles.title,
  COUNT(DISTINCT titles.id) AS `count`
FROM user_history titles
GROUP BY titles.title
ORDER BY titles.title;

如果您不需要任何特殊格式,您是否考虑过只编写一个CSV文件?@SimpleCoder-我确实需要特殊格式。关于如何为pdo执行此操作的任何建议似乎都是行获取方式?我做了PDO::FETCH_ASSOC:这对我很有效。
SELECT
  titles.title,
  COUNT(DISTINCT titles.id) AS `count`
FROM user_history titles
GROUP BY titles.title
ORDER BY titles.title;