[英]Error with Date format in PHP and SQL
我在處理日期格式時遇到問題。 在我的代碼中,我嘗試計算一個從指定日期開始的到期日期,然后將其保存在我的MySQL數據庫中。
問題是我總是收到此錯誤:
致命錯誤:在非對象上調用成員函數add()
我無法解決。 例如,如果我將$ scadenza_contratto手動替換為特定日期,則此方法有效,例如:
$expiration_date = DateTime::createFromFormat('Y-m-d', '2016-02-10');
在這種情況下,它可以工作,但是我需要從$ scadenza_contratto接收日期。 你能幫我嗎? 這是我的代碼:
if($anno > 0 && $giorno > 0 && $mese >0){
$scadenza_contratto = $anno."-".$mese."-".$giorno;
//$scadenza_contratto = date('Y-m-d', strtotime("+{$scadenze} months", strtotime($scadenza_contratto)));
$sql1 = "SELECT * FROM scadenze WHERE contratto_id=$contratti_id";
$row1 = mysql_fetch_assoc( mysql_query($sql1) );
echo "tipo ".$row1['tipo'];
if(!$row1){
for ($m = $scadenze; $m <=60 ; $m += $scadenze){
//add $m to activation_date
$scadenza_contratto = $anno."-".$mese."-".$giorno;
$expiration_date = DateTime::createFromFormat('Y-m-d', '$scadenza_contratto');
$expiration_date->add(new DateInterval('P'.$m.'M'));
//do something with $expriration_date
echo "Expire: ".$expiration_date->format('Y-m-d'). "<br>";
$expiration_db = $expiration_date->format('Y-m-d H:i:s');
$time=time();
//mysql_query("INSERT INTO contratti (nome_area) VALUES('$nome_area','$giorno','$mese','$file_name','$attiva','$id_voce','$nome_azienda','$time')");
mysql_query("INSERT INTO scadenze (nome_azienda,nome_voce,contratto_id,nome_area,scadenza,tipo,created_date) VALUES ('$nome_azienda','$nome_voce','$contratti_id','$nome_area','$expiration_db','$scadenze','$time')");
}
}
}
第一個問題:
$expiration_date = DateTime::createFromFormat('Y-m-d', '$scadenza_contratto');
您正在嘗試將字符串文字'$scadenza_contratto'
轉換為日期,而不是字符串變量$scadenza_contratto
的值。
第二個問題是格式掩碼,因為您將$mese
和$giorno
的值視為整數,所以它們的值可能小於10。 並且您當前的掩碼假設它們將始終是兩位數字值(如果小於10,則以0
開頭),情況可能並非如此
更改為
$expiration_date = DateTime::createFromFormat('Y-n-j', $scadenza_contratto);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.