使用PHP会话显示多个数据库行

时间:2019-03-02 08:16:31

标签: php session-variables

我有一个PHP类,它从数据库中获取数据,另一个类显示已获取的数据。该代码似乎很好,除了不显示所有行,而是仅显示应该在结果中的最后一行。这是获取数据的代码

$getComm->execute();
$result = $getComm->fetchALL(PDO::FETCH_ASSOC);

foreach ($result as $row) {
    $_SESSION['days'] = $row['sales_day'];
    $_SESSION['amount'] = $row['sales_total'];
    $_SESSION['commission'] = $row['sales_comm'];
}

这是显示数据的代码

<tr>
    <td><label><?php echo $_SESSION['days']; ?></label></td>
    <td><label><?php echo $_SESSION['amount']; ?></label></td>
    <td><label><?php echo $_SESSION['commission']; ?></label></td>
</tr>

唯一的问题是显示的是最后一行,而不是查询中的所有行。

3 个答案:

答案 0 :(得分:4)

每次使用相同名称的SESSION获得不同的值时,您的循环中的

值都将丢失。您可以创建数组,然后数组和会话中的所有行插入都等于数组,因为一个会话名称具有许多值。

out = ""
try
    global out
    out = read(`$x`, String)
catch ex
    @error ex
end

答案 1 :(得分:1)

您应该将表包装在循环中。

现在,您运行循环并继续覆盖相同的会话值,然后使用该会话变量保存最后一个覆盖的值。

您必须做这样的事情-

<?php foreach ($result as $row) { ?>

<tr>
    <td><label><?php echo $row['sales_day']; ?></label></td>
    <td><label><?php echo $row['sales_total']; ?></label></td>
    <td><label><?php echo $row['sales_comm']; ?></label></td>
</tr>

<?php } ?>

我不确定您为什么要在会话中这样做?如果您只想显示行,则可以按照我的建议进行操作。但是,如果要将所有数据存储到会话中,则可以通过将数组存储在会话中来实现,例如-

$i=0;
foreach ($result as $row) {
    $_SESSION['days'][$i] = $row['sales_day'];
    $_SESSION['amount'][$i] = $row['sales_total'];
    $_SESSION['commission'][$i] = $row['sales_comm'];
$i++;
}

答案 2 :(得分:0)

由于没有足够的代表,我无法发表评论,因此我必须将其写为答案。

在我看来,我认为$ row ['sales_day']和$ row ['sales_total']中没有数据。

您检查数据库查询是否正确?您还尝试过在执行foreach循环的页面上直接回显$ row ['sales_day']或$ row ['sales_total']的页面以查看其是否包含数据吗?

编辑:我注意到您用两个大写的L来写fetchAll:“ fetchALL”。 不确定会有所不同,但请仔细阅读PHP手册,应将其写为“ fetchAll”