我想做一個自動化的腳本,每天檢查一次,如果一個帳戶有他們的到期日期「今天」,如果是這樣,在他們的利率加上目前的貸款,但由於某種原因,我的腳本一旦掃描了第一個條目並且沒有通過數據庫中的所有條目就會停止。PHP腳本檢查所有databse條目只讀取一行然後停止
任何人都可以告訴我我失蹤或做錯了什麼嗎?先謝謝你! (或建議是否有更好的方法來完全做到這一點)
<?php
require('include/dbconfig.php');
$host = "redacted";
$user = "redacted";
$password = "redacted";
$datbase = "lending";
$tbl_name = "users";
mysql_connect($host, $user, $password);
mysql_select_db($datbase);
$sql_query = "SELECT user_id, datedue, locurrentamt, interestrate, first_name FROM $tbl_name";
$result_set = mysql_query($sql_query);
while ($row = mysql_fetch_row($result_set)) {
$user_id = $row['0'];
$first_name = $row['4'];
// FOR EACH DATABASE ENTRY CHECK THE DUE DATE
date_default_timezone_set('Australia/Perth');
$datetoday = date("Y/m/d");
$dateduefromdb = $row['1'];
// RETURN FALSE IF THE DATES ARE BOGUS
if (!$a = strtotime($datetoday))
return FALSE;
if (!$z = strtotime($dateduefromdb))
return FALSE;
// MAN PAGE http://php.net/manual/en/function.gregoriantojd.php
$a_jd = GregorianToJD(date('m', $a), date('d', $a), date('Y', $a));
$z_jd = GregorianToJD(date('m', $z), date('d', $z), date('Y', $z));
$countdowndate = $z_jd - $a_jd;
if ($countdowndate == 0 && $countdowndate >= 0) {
$dueamt = $row['2'];
$dueinterest = $row['3'];
$interestcharge = $dueamt * $dueinterest;
$finalinterest = $interestcharge + $dueamt;
$first_name = $row['4'];
$sql_query = "UPDATE users SET locurrentamt='$finalinterest' WHERE id='$user_id'";
}
}
你有一定的誤差?並且請不要使用mysql_ * –
沒有錯誤,腳本運行正常,但它只返回一行,並停止出於某種原因。 我會在同一時間看看mysqli謝謝! – Judes
可能導致循環(腳本)提早結束的一個明顯問題是「日期檢查」。例如:'if(!$ a = strtotime($ datetoday))...'。這些應該至少生成日誌錯誤或拋出異常?請不要抓住例外。如果還沒有將'error_reporting'設置爲E_ALL將會很有用。 –