SQL查询输出是正确的,但是php编写的程序无法显示结果

时间:2018-06-13 07:08:04

标签: php mysql

在下面提到的程序中,我编写了一个SQL查询,显示剩余的数量。我检查了查询,它工作正常。 我认为编写php程序存在问题,我无法找到问题所在。

感谢您阅读我的问题。

<?php
    $sql2 = "SELECT AMOUNT_REMAINAING from MAIN_TABLE ORDER BY AMOUNT_REMAINAING DESC LIMIT 1";
    $query2 = $dbh -> prepare($sql2);
    $query2->execute();
    $results2=$query2->fetchAll(PDO::FETCH_OBJ);
?>

 <div class="stat-panel-number h1 "><?php echo htmlentities($results2[0]); ?></div>
 <div class="stat-panel-title text-uppercase">Budget Remaining</div>

<a href="manage-vehicles.php" class="block-anchor panel-footer text-center">Full Detail &nbsp; <i class="fa fa-arrow-right"></i></a>

编辑1:

我的表 enter image description here

编辑2: 在Tim Biegeleisen解决之后,结果是一样的 enter image description here

Paul Coldrey的解决方案就是结果

enter image description here

编辑3: 这就是我通过print_r得到的结果(results2);

enter image description here

2 个答案:

答案 0 :(得分:0)

fetchAll函数将返回您选择的单个AMOUNT_REAMINING列的所有结果的数组。由于您还添加了LIMIT 1,因此此数组应该只包含(最多)一个项目。所以,只需访问第一项:

$results2[0]

您更新的HTML代码:

<div class="stat-panel-number h1 "><?php echo htmlentities($results2[0]); ?></div>
<div class="stat-panel-title text-uppercase">Budget Remaining</div>

答案 1 :(得分:0)

由于fetchAll返回一个数组,我希望你需要一个[0]来获取第一行。然后你需要另一个[0]来获得第一列。 FETCH_OBJ也会给你一个对象,但你真的只想要这个值。因此,我认为你想要:

<?php
    $sql2 = "SELECT AMOUNT_REMAINAING from MAIN_TABLE ORDER BY AMOUNT_REMAINAING DESC LIMIT 1 ";
    $query2 = $dbh -> prepare($sql2);
    $query2->execute();
    $results2=$query2->fetchAll()[0][0];
?>

您也可以只显式选择第一列,如下所示:

$query2->fetchAll(PDO::FETCH_COLUMN, 0);

然后你需要选择带[0]的第一行,所以该行将是

$results2=$query2->fetchAll(PDO::FETCH_COLUMN, 0)[0];