繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM