在下面提到的程序中,我编写了一个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 <i class="fa fa-arrow-right"></i></a>
编辑1:
编辑2: 在Tim Biegeleisen解决之后,结果是一样的
Paul Coldrey的解决方案就是结果
编辑3: 这就是我通过print_r得到的结果(results2);
答案 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];