簡體   English   中英

PHP和SQL中的日期格式錯誤

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

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