我是新手,我在这里看了很多不同的帖子,以及谷歌上发现的很多其他资源,但我仍在努力使用数组.
在我的HTML中,我基本上试图在我的数据库中显示一列美元金额的总和.
这是我的HTML/PHP:
<div class="col-sm-2">
<h1><?php get_sum_income(); ?></h1>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的外部PHP文件,它调用的函数:
function get_sum_income() {
require(ROOT_PATH . "inc/database.php");
try {
$results = $db->prepare("SELECT SUM(cat_amount) FROM categories WHERE is_income = '1';");
$results->execute();
} catch (Exception $e) {
echo ("ERROR: Data could not be retrieved from the database." . $e);
exit;
}
$sum_income = $results->fetch(PDO::FETCH_ASSOC);
print $sum_income;
Run Code Online (Sandbox Code Playgroud)
};
我不断收到"数组到字符串转换"错误,我知道它与我对数组的理解(或缺少数组)有关.我环顾四周,我只是需要帮助解决我的具体情况.
另外,我是如何以最佳方式访问该功能的?
你不能print一个数组.print是为了标量.PHP正在尝试将您的数组转换为字符串,以便它可以print,但即使它自己的尝试失败,因为它根本不受支持.
不过你可以print_r!
更新听起来您想要自己检索作为数据库查询结果的数组的单个元素.它位于一个数组中,因为PHP不会提前知道结果集中只有一列.
在你的情况下,你写道:
print $sum_income['SUM(cat_amount)'];
Run Code Online (Sandbox Code Playgroud)
不过,这非常笨拙.您可以通过在MySQL查询中为列提供别名来缩短它:
SELECT SUM(`cat_amount`) AS `mySum` FROM `categories` WHERE `is_income` = '1';
Run Code Online (Sandbox Code Playgroud)
然后:
$row = $results->fetch(PDO::FETCH_ASSOC);
print $row['mySum'];
Run Code Online (Sandbox Code Playgroud)
(我也改进了变量名!)