【问题标题】:PHP MySQL select issue [duplicate]PHP MySQL选择问题[重复]
【发布时间】:2016-02-18 18:29:57
【问题描述】:

我有一个名为 emplyees 的数据库,其结构如下:

id name   entrydate    totalhours
1  test   11/11/2015      8
2  test2  11/11/2015      7
3  test   11/12/2015      8
4  test2  11/12/2015      9

我想把它变成这样的东西

id name 11/11/2015  11/12/2015 
1  test      8          8
2  test2     7          9

我尝试了几种方法但没有结果我该怎么做? 提前致谢!

【问题讨论】:

  • 我想在 3 周内查看您的表格结构
  • 会包含很多数据
  • 标准是什么?
  • @Strawberry 听到这个消息我很难过。我相信 OP 想要一份月度报告,其中日期显示在列中,而不是在行中。这称为透视或交叉表查询。我链接的主题为这个问题提供了解决方案。显然,该解决方案必须针对这个特定问题进行定制。

标签: php mysql database reporting


【解决方案1】:

一旦你确定了你的日期,这样的东西应该可以在 PHP 中运行......

<?php

require('path/to/connection/stateme.nts');

$query = "
SELECT name
     , entrydate
     , totalhours
  FROM my_table
 ORDER
    BY name;
";

$result = mysqli_query($db,$query);

$array = array();

while($row = mysqli_fetch_assoc($result)){
$array[] = $row;
}


foreach ($array as $element)
    $newArray[$element["name"]][] = array($element["entrydate"]=>$element["totalhours"]);

print_r($newArray);

?>

输出:

Array
(
    [test] => Array
        (
            [0] => Array
                (
                    [2015-11-11] => 8
                )

            [1] => Array
                (
                    [2015-11-12] => 8
                )

        )

    [test2] => Array
        (
            [0] => Array
                (
                    [2015-11-11] => 7
                )

            [1] => Array
                (
                    [2015-11-12] => 9
                )

        )

)

...可以很容易地吐出到表格或 json 中

【讨论】:

  • 我试过但没有成功:|
猜你喜欢
  • 2011-02-25
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多