日期差异计数功能无法更新到数据库

Date diff count function not able to update to database

我正在尝试将日期差异更新到 sql 数据库,当我输出 echo $foo 时它显示输出,当我尝试 UPDATE 到数据库时它没有更新并且值为 0。该列是 total INTEGER(4)

我直接在 SQL 语句上尝试了字符串 total = '53' - 它有效
我什至在变量 $foo = '24' 上尝试了一个字符串 - 它有效
使用函数不是UPDATING.

$startingDate = mysqli_real_escape_string($con, $_POST['fm_startingdate']);
$endingDate = mysqli_real_escape_string($con, $_POST['fm_endingdate']);

$foo = timeTotal($startingDate, $endingDate);
function timeTotal($dT1, $dT2){
    $d1 = new DateTime($dT1);
    $d1->sub(new DateInterval("P1D"));
    $d2 = new DateTime($dT2);
    $diff = $d1->diff($d2);
    echo $diff->days;
}

echo $foo // 53

if(mysqli_num_rows($result) == 0){
    $sql = "UPDATE terms SET
            name = '$termNameTrimmed',
            startingdate = '$startingDate',
            endingdate = '$endingDate',
            total = '$foo' // <-- this is not updating as expected
            WHERE term_id = '$termId'";

    if(mysqli_query($con, $sql)){
        $_SESSION['success'] = "Updated Successfully!";
        header("Location: ../../term_months.php".$URLId);
    }
    else {
        echo "Records are NOT Added. Please try again<br />";
        echo mysqli_error ($con);
    }
}
else{
    $_SESSION['exists'] = "<strong>".$termNameTrimmed."</strong> name is already exists!";
    header ("Location: ../../term_month_edit.php".$URLId);
}

问题出在你的函数中,它没有return任何东西,但是 echo,试试:

$foo = timeTotal($startingDate, $endingDate);
function timeTotal($dT1, $dT2){
    $d1 = new DateTime($dT1);
    $d1->sub(new DateInterval("P1D"));
    $d2 = new DateTime($dT2);
    $diff = $d1->diff($d2);
    return $diff->days; // no echo but return 
}

echo $foo // 53

提示:为了调试,在结果前面使用一个字符串:

  echo "$foo:". $foo;

在你的情况下它会回显 $foo:0