循环一直运行到满足条件,但insert语句只使用一次



我正在尝试创建一个费用管理系统,如果用户选择每天、每周、每月等频率,我将能够在该系统中安排未来的费用。

为了实现这一点,我创建了一个循环,但在上面的代码中,My循环会运行,$sde会根据需要进行响应,但我的insert语句只运行一次。我想为每个更新的日期运行insert语句。

$sde=$arr['startdateexpense'];
$ede=$arr['enddateexpense'];
$modifiers=[
"Annually"=>"+1 year",
"Daily"=>"+1 day",
"Weekly"=>"+1 week",
"Fort-nightly"=>"+2 weeks",
"Monthly"=>"+1 month",
"Quarterly"=>"+4 months",
"Semi-Annually"=>"+6 months",
];
while($sde <= $ede){
echo $sde , ' ';
$modifier= $modifiers[$ExpenseFrequency];
$sde = new DateTime($sde);
$sde->modify($modifier);
$sde= $sde->format('Y-m-d');                
//Insert statement
$sql = "INSERT INTO expense (ExpenseDate, ExpenseCategoryName, ExpenseItem, ExpenseCost, Image, ExpenseDescription) VALUE ('".$sde."','".$ExpenseCategoryID."', '".$item."', 
'".$costitem."', '".$tphoto."', '".$description."')";
}

我的$sde每次都会更新,但唯一的问题是插入语句。

有人能帮我吗?

如果在循环中不断设置$sql,它最终会得到上一次迭代的值。

需要收集一组值,然后插入。也是它的VALUES而不是VALUE

$values = array();
while($sde <= $ede){
echo $sde , ' ';
$modifier= $modifiers[$ExpenseFrequency];
$sde = new DateTime($sde);
$sde->modify($modifier);
$sde= $sde->format('Y-m-d');                
//Insert statement
$values[] = "('".$sde."','".$ExpenseCategoryID."', '".$item."', '".$costitem."', '".$tphoto."', '".$description."')";
}
$sql = "INSERT INTO expense (ExpenseDate, ExpenseCategoryName, ExpenseItem, ExpenseCost, Image, ExpenseDescription) VALUES " . join(', ', $values);

最新更新