将php/mysql列输出显示为行
我使用以下语法在PHP中显示MySQL查询:将php/mysql列输出显示为行,php,mysql,Php,Mysql,我使用以下语法在PHP中显示MySQL查询: function get_dayssincecapture($db) { $result = $db->query("SELECT DATEDIFF(now(), sarrive)as days,count(loadnumber) as loads from v2loads where adminstatus='captured' group by DATEDIFF(now(), sarrive) ");
function get_dayssincecapture($db)
{
$result = $db->query("SELECT DATEDIFF(now(), sarrive)as days,count(loadnumber) as loads from v2loads where adminstatus='captured' group by DATEDIFF(now(), sarrive) ");
return $result;
}
$dayssincecapture = get_dayssincecapture($db);
显示语法:
<table border=1>
<tr>
<? while($row = $dayssincecapture->fetch(PDO::FETCH_ASSOC)) { ?>
<td><? echo $row['days']; ?><br><? echo $row['loads']; ?></td>
<? } ?>
</tr>
</table>
这将产生下面的屏幕输出
如何通过表语法进行修改,以便将days字段作为行标题,将load字段作为表的第二行
所以我想要的是:
一如既往地感谢您,请尝试:
<?php
$dayssincecapture = get_dayssincecapture($db);
$data = array('days' => array(), 'loads' => array());
while($row = $dayssincecapture->fetch(PDO::FETCH_ASSOC)) {
$data['days'][] = $row['days'];
$data['loads'][] = $row['loads'];
}
?>
<table style="border: 1px solid #000">
<tr>
<td>Days</td>
<?php foreach ( $data['days'] as $day ) { ?>
<td><?php echo $day; ?></td>
<?php } ?>
</tr>
<tr>
<td>Loads</td>
<?php foreach ( $data['loads'] as $load ) { ?>
<td><?php echo $load; ?></td>
<?php } ?>
</tr>
</table>
天
荷载
试试:
<?php
$dayssincecapture = get_dayssincecapture($db);
$data = array('days' => array(), 'loads' => array());
while($row = $dayssincecapture->fetch(PDO::FETCH_ASSOC)) {
$data['days'][] = $row['days'];
$data['loads'][] = $row['loads'];
}
?>
<table style="border: 1px solid #000">
<tr>
<td>Days</td>
<?php foreach ( $data['days'] as $day ) { ?>
<td><?php echo $day; ?></td>
<?php } ?>
</tr>
<tr>
<td>Loads</td>
<?php foreach ( $data['loads'] as $load ) { ?>
<td><?php echo $load; ?></td>
<?php } ?>
</tr>
</table>
天
荷载
如果您想在MySQL中执行这种类型的转换,那么您将旋转数据。MySQL没有pivot函数,但您可以使用聚合函数和CASE
语句复制该函数:
select
count(case when DATEDIFF(now(), sarrive) = 1 then loadnumber end) as Day_1,
count(case when DATEDIFF(now(), sarrive) = 2 then loadnumber end) as Day_2,
count(case when DATEDIFF(now(), sarrive) = 3 then loadnumber end) as Day_3,
count(case when DATEDIFF(now(), sarrive) = 4 then loadnumber end) as Day_4,
count(case when DATEDIFF(now(), sarrive) = 5 then loadnumber end) as Day_5,
count(case when DATEDIFF(now(), sarrive) = 6 then loadnumber end) as Day_6,
count(case when DATEDIFF(now(), sarrive) = 7 then loadnumber end) as Day_7
from v2loads
where adminstatus='captured'
您还可以在准备好的语句中编写此代码以动态创建此语句,因为值是未知的。如果您希望在MySQL中执行这种类型的转换,那么您将旋转数据。MySQL没有pivot函数,但您可以使用聚合函数和
CASE
语句复制该函数:
select
count(case when DATEDIFF(now(), sarrive) = 1 then loadnumber end) as Day_1,
count(case when DATEDIFF(now(), sarrive) = 2 then loadnumber end) as Day_2,
count(case when DATEDIFF(now(), sarrive) = 3 then loadnumber end) as Day_3,
count(case when DATEDIFF(now(), sarrive) = 4 then loadnumber end) as Day_4,
count(case when DATEDIFF(now(), sarrive) = 5 then loadnumber end) as Day_5,
count(case when DATEDIFF(now(), sarrive) = 6 then loadnumber end) as Day_6,
count(case when DATEDIFF(now(), sarrive) = 7 then loadnumber end) as Day_7
from v2loads
where adminstatus='captured'
您还可以在准备好的语句中编写此代码以动态创建此语句,因为值未知。您可以尝试:
<?php
while($row = $dayssincecapture->fetch(PDO::FETCH_ASSOC)) {
$days_row .= "<td>" . $row['days'] . "</td>";
$loads_row .= "<td>" . $row['loads'] . "</td>";
}
?>
<table>
<tr>
<td>Days</td>
<?php echo $days_row; ?>
</tr>
<tr>
<td>Loads</td>
<?php echo $loads_row; ?>
</tr>
</table>
天
荷载
您可以尝试:
<?php
while($row = $dayssincecapture->fetch(PDO::FETCH_ASSOC)) {
$days_row .= "<td>" . $row['days'] . "</td>";
$loads_row .= "<td>" . $row['loads'] . "</td>";
}
?>
<table>
<tr>
<td>Days</td>
<?php echo $days_row; ?>
</tr>
<tr>
<td>Loads</td>
<?php echo $loads_row; ?>
</tr>
</table>
天
荷载
您想要SQL解决方案还是php?谢谢@BlueFoots,对两者都很满意。谢谢,你想要SQL解决方案还是php?谢谢@bluefeet,对两者都很满意。谢谢,Awesome@hsz,感谢您的及时回复。非常棒的语法,谢谢。非常棒@hsz,感谢您的及时回复。很棒的语法,谢谢。