Php 添加年份中断计算的位置

Php 添加年份中断计算的位置,php,mysql,Php,Mysql,我有一个非常简单的问题: SELECT a, b, a+b as c FROM records 这很有效。他是结果中的一个例子: Array ( [a] => 100.92 [b] => 21.00 [c] => 121.92 ) 但当我尝试按年份筛选记录时: SELECT a, b, a+b as c FROM records WHERE YEAR(`mydate`) = '2011' a+b计算消失: Array ( [a] => 100.92 [b] =>

我有一个非常简单的问题:

SELECT a, b, a+b as c FROM records
这很有效。他是结果中的一个例子:

Array ( [a] => 100.92 [b] => 21.00 [c] => 121.92 )
但当我尝试按年份筛选记录时:

SELECT a, b, a+b as c FROM records
WHERE YEAR(`mydate`) = '2011'
a+b计算消失:

Array ( [a] => 100.92 [b] => 21.00 [c] => ) 
我错过了什么明显的东西吗

更新:

  • 有人问我实际的SQL,这里是:

    从交易记录中选择贷方、借方、贷方+借方作为总计 其中年份(
    transaction\u date
    )=“2011”

  • 交易记录日期是日期字段类型

  • 此外,贷方或借方字段始终为零

  • PHP代码:

  • 代码

    include($_SERVER["DOCUMENT_ROOT"] . "/pool/_/db.php");
    
    $sql = "SELECT credit, debit, credit+debit as total FROM transactions
                WHERE YEAR(`transaction_date`) = 2011";
    
    $result = mysql_query($sql) or die(mysql_error());
    
    while($row = mysql_fetch_assoc($result)) {
            print_r($row);
    }
    

    我能想到的唯一一件事是,
    credit
    debit
    NULL
    (而不是
    0
    ),这反过来又会使total
    的值为NULL
    。试试这个,看看它是否改变了什么:

    ... COALESCE(credit, 0) + COALESCE(debit, 0) as total ...
    

    愚蠢的问题,但是
    mydate
    的数据类型是什么?应该避免在
    WHERE
    子句中的列周围使用函数
    其中mydate(如“2011-%”)更好。我不确定这是否重要,但Year函数将返回一个整数值。@您不需要在
    2011
    中使用单引号。该函数返回一个整数。Whit,有两种选择:要么PHP脚本弄乱数组,要么计算返回null。由于您证明了查询在没有条件时不会返回null,因此很容易假设问题出在PHP脚本中。我唯一能想到的是,
    credit
    debit
    null
    (而不是
    0
    ),这反过来会使
    total
    的值也为null
    。试试这个,看看它是否改变了什么。。。合并(贷方,0)+合并(借方,0)作为总计…