1 回答

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊
假設(shè)您正在使用,那么我希望這可能有所幫助。為了與關(guān)于2個(gè)斷開連接的循環(huán)的注釋保持一致,您可以/應(yīng)該組合成一個(gè)循環(huán),其中計(jì)算日期值并用作sql語句的輸入。由于您發(fā)布了一段代碼而不是完整的東西,因此不可能說您的sql是否容易受到sql注入的影響,但是在涉及金錢的情況下,明智的做法是不要冒險(xiǎn)并嘗試減輕惡意攻擊 - 因此使用mysqliprepared statement.
該類具有多種方法來幫助操作日期,在這種情況下,可以非常清楚地完成月份的添加,如下所示。DateTime
實(shí)質(zhì)上,您創(chuàng)建帶有占位符 () 的 sql 語句,并在運(yùn)行時(shí)將這些占位符綁定到變量。準(zhǔn)備好語句后,可以根據(jù)需要多次執(zhí)行它,而幾乎沒有額外的開銷。?
/* some example / dummy dates ~ source unknown */
$str_date_start='2020-01-01';
$str_date_end='2021-01-01';
/* create a prepared statement */
$sql='insert into `collection` ( `period`, `amount_collected` ) values (?,?)';
$stmt=$conn->prepare( $sql );
$stmt->bind_param( 'ss', $date, $monthly_payment );
/* original repayment calculations - corrected spelling of interest*/
$interest_loan = $loan_amount * $interest / 100;
$monthly_payment = $loan_amount / $tenor;
/* create new date objects */
$start=new DateTime( $str_date_start );
$end=new DateTime( $str_date_end );
$interval=new DateInterval('P1M');
/* make sure we start AT the start */
$start->sub( $interval );
while( $start < $end ){
$start->add( $interval );
$date=$start->format('Y-m-d 00:00:00');
$stmt->execute();
}
$stmt->close();
$conn->close();
- 1 回答
- 0 關(guān)注
- 126 瀏覽
添加回答
舉報(bào)