簡體   English   中英

將while循環中的數據插入數據庫php

[英]insert data from while loop into database php

我正在嘗試將這些 while 循環中的數據發布到我的數據庫中。 它幫助我獲得特定范圍內的月度。 我想選擇日期並將日期與其他數據一起輸入到我的數據庫中。 我被卡住了,請放輕松。

 // Calculate interest
$intrest_loan = $loan_amount * $intrest / 100;
$monthly_payment = $loan_amount / $tenor;

// echo $intrest_loan;
// echo $monthly_payment;

$date = $start;

while ($date <= $end)
{
    $date = date('Y-m-d', strtotime($date . ' +1 month'));
    // echo $date . "\n";
    $sql = "insert into collection (period, amount_collected) values ($date, $monthly_payment)";
    $resultn = mysqli_query($connection, $sql);
    if($resultn) {

    }else{
        echo "<p>Failed to load collections</p>";
    }
}

編輯的代碼。

假設您正在使用mysqli那么我希望這可能會有所幫助。 與對 2 個斷開連接的循環所做的評論保持一致,您可以/應該合並到一個循環中,在其中計算日期值並用作 sql 語句的輸入。 當您發布一段代碼而不是完整的代碼時,無法確定您的 sql 是否容易受到 sql 注入的影響,但是在涉及金錢的情況下,最好不要冒險並嘗試減輕惡意攻擊 - 因此使用prepared statement.

DateTime類有多種方法來幫助操作日期,在這種情況下,可以非常干凈地添加一個月,如下所示。

本質上,您使用占位符 ( ? ) 創建 sql 語句,並在運行時將這些占位符綁定到變量。 准備好語句后,它可以根據需要執行多次,幾乎沒有額外的開銷。

/* 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM