[英]Loop runs until the condition is met but insert statement is being used only once
我正在尝试创建一个费用管理系统,如果用户选择每天、每周、每月等频率,我将能够安排未来的费用。
为了实现这一点,我创建了一个循环,但在上面的代码中,我的循环运行,并且 $sde 根据需要回显,但我的插入语句只运行一次。 我想为每个更新日期运行插入语句。
$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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.