【问题标题】:MySQL SUM() Returns an Empty Array Instead of Decimal ValueMySQL SUM() 返回一个空数组而不是十进制值
【发布时间】:2022-01-19 13:14:33
【问题描述】:

在尝试获取十进制类型列 (4,2) 中的付款总和时,我得到一个空数组。代码如下:

global $wpdb;
$balance = $wpdb->get_results("SELECT cast(sum(cpi) as decimal(5,2)) AS balance_value FROM hp_callbacks");
$row = mysqli_fetch_assoc($balance);
$sum = $row['balance_value'];
echo "Result: $sum";

检查 $balance 时,我可以看到它是一个数组:

global $wpdb;
$balance = $wpdb->get_results("SELECT cast(sum(cpi) as decimal(5,2)) AS balance_value FROM hp_callbacks");
echo "Result: $balance";

输出是:

Result: Array

我想将“cpi”列(无空行)中所有行的总余额显示为 $sum。做错了什么?有什么想法可以修复我的代码吗? 附言如果有用的信息,请在 WordPress 中使用它...

【问题讨论】:

  • 嗯,$balance 是一个数组,没错。试试var_dump($balance); 看看它包含什么。
  • 如果你在 wp 中回显一个数组,wp 显示一个数组文本来表示它是一个数组。您必须使用数组索引来显示您的结果。首先使用 print_r 方法并通过输出找到索引
  • 谢谢@aynber 和@MohammadYousefi!我使用var_dump($balance) 并得到以下输出:array(1) { [0]=> object(stdClass)#1323 (1) { ["balance_value"]=> string(4) "2.94" } }print_r 我得到了:Array ( [0] => stdClass Object ( [balance_value] => 2.94 ) ) 1

标签: php mysql wordpress sum


【解决方案1】:

您的数组包含一个具有一个名为 balance_value 的属性的对象,因此您可以像这样访问它

echo "Result: " . $balance[0]->balance_value;

【讨论】:

  • 谢谢你,@RiggsFolly!现在可以了!但我对其进行了一些修改,以便在代码的其他地方使用。 $balance = $balance[0]->balance_value; echo "Result: $balance";
【解决方案2】:

尝试使用

$rownum = 0 /* put the value of the row which you want to retrieve, I want to retrieve only the first row */ 
$balance[$rownum][0]

问题是由于您的代码返回了一个数组,该数组无法使用 echo 打印。如果要打印数组,请使用

print_r($balance);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-17
    • 2016-06-27
    • 1970-01-01
    • 2020-02-23
    • 2023-04-03
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多