为什么利息摊销没有发生在我的PHP代码中

为什么利息摊销没有发生在我的PHP代码中,php,mysql,sql,Php,Mysql,Sql,我正在尝试创建一个脚本,使用贷款摊销公式摊销我的利息。但我只想摊销利息并将其插入数据库。 我的程序面临的问题是,利息并没有像预期的那样减少。我希望它在数据库中的amo_intr列上生成如下结果 amo\u intr 12 11.50 10.95 10.32 9.62 8.84 7.96 6.98 5.88 4.65 3.27 1.73看起来您的字段amo_intr的类型为int 我尝试用这个php脚本模拟它 <?php date_default_timezone_set('America

我正在尝试创建一个脚本,使用贷款摊销公式摊销我的利息。但我只想摊销利息并将其插入数据库。 我的程序面临的问题是,利息并没有像预期的那样减少。我希望它在数据库中的amo_intr列上生成如下结果

amo\u intr
12
11.50
10.95
10.32
9.62
8.84
7.96
6.98
5.88
4.65
3.27

1.73
看起来您的字段
amo_intr
的类型为int

我尝试用这个php脚本模拟它

<?php
date_default_timezone_set('America/Los_Angeles');

$nn=11;
$install=16.14;
$edat='2016-03-15';
$amt=100;
$i=0.12;
$actual_l='L8080';
$ecn='R555555';
$amo_intr=$amt*$i;
echo ("insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('$edat','".(int)$amo_intr."','$actual_l','$ecn','$amt')")."\n";
$lt=0;
while($lt<$nn)
{
    $lt++;
    $balance=$amt-($install-$amo_intr);
    $amo_intr=$balance*$i;
    $otherdat = strtotime(date("Y-m-d", strtotime($edat)) . " +".$lt." month");
    $otherdat = date("Y-m-d",$otherdat);
    echo ("insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('$otherdat','".(int)$amo_intr."','$actual_l','$ecn','$amt')")."\n";
}
?>
您的$amo_intr计算公式中也存在错误:

  • 您需要在循环之前初始化余额,
    $balance=$amt
  • 并使用
    $balance-=($install-$amo_intr)计算循环内的平衡
您的工作代码:

<?php
date_default_timezone_set('America/Los_Angeles');

$nn=11;
$install=16.14;
$edat='2016-03-15';
$amt=100;
$i=0.12;
$actual_l='L8080';
$ecn='R555555';
$amo_intr=$amt*$i;
echo ("insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('$edat','".$amo_intr."','$actual_l','$ecn','$amt')")."\n";

$balance = $amt;
$lt=0;
while($lt<$nn)
{
    $lt++;
    $balance-=($install-$amo_intr);
    $amo_intr=$balance*$i;
    $otherdat = strtotime(date("Y-m-d", strtotime($edat)) . " +".$lt." month");
    $otherdat = date("Y-m-d",$otherdat);
    echo ("insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('$otherdat','".$amo_intr."','$actual_l','$ecn','$amt')")."\n";
}
?>

你的
amo_intr
专栏的数据类型是什么?哦,顺便说一句——“不要评论mysql语法,我知道它是经过修饰的”。。。简单地用mysql替换mysqli要比键入这9个单词容易得多。得到答案谢谢谢谢这工作做得很好。你做得很好。再次感谢
<?php
date_default_timezone_set('America/Los_Angeles');

$nn=11;
$install=16.14;
$edat='2016-03-15';
$amt=100;
$i=0.12;
$actual_l='L8080';
$ecn='R555555';
$amo_intr=$amt*$i;
echo ("insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('$edat','".$amo_intr."','$actual_l','$ecn','$amt')")."\n";

$balance = $amt;
$lt=0;
while($lt<$nn)
{
    $lt++;
    $balance-=($install-$amo_intr);
    $amo_intr=$balance*$i;
    $otherdat = strtotime(date("Y-m-d", strtotime($edat)) . " +".$lt." month");
    $otherdat = date("Y-m-d",$otherdat);
    echo ("insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('$otherdat','".$amo_intr."','$actual_l','$ecn','$amt')")."\n";
}
?>
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-03-15','12','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-04-15','11.5032','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-05-15','10.946784','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-06-15','10.32359808','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-07-15','9.6256298496','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-08-15','8.843905431552','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-09-15','7.9683740833382','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-10-15','6.9877789733388','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-11-15','5.8895124501395','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2016-12-15','4.6594539441562','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2017-01-15','3.281788417455','L8080','R555555','100')
insert into amortize(amo_dat,amo_intr,lcode,ecn,amt) values('2017-02-15','1.7388030275496','L8080','R555555','100')