2016-07-10 10 views
0
<?php 

session_start(); 

@mysql_connect('localhost','jk','') or die('Please Check Username or Password'); 
@mysql_select_db('jks') or die('error connetcing database'); 

$qry3="Select ID from fresh_orders"; 
$id=mysql_query($qry3); 

$qry1="Select CurDate from fresh_orders"; 
$rs=mysql_query($qry1); 
$row=mysql_fetch_array($rs); 
$d210=$row[0]; 
$d21=date("Y-m-d", strtotime($d210)); 
echo (" d21 = "),$d21; 

$qry2="Select DueDate from fresh_orders"; 
$rss=mysql_query($qry2); 
$row=mysql_fetch_array($rss); 

$d71=$row[0]; 
$d7=date("Y-m-d", strtotime($d71)); 
echo (" d7 = "),$d7; 



$date1=date_create("$d21"); 
$date2=date_create("$d7"); 
$interval=date_diff($date1,$date2); 
echo $interval->format("%R%a days"); 




$qry="update fresh_orders set DDays='".$interval."' where ID=".$id.""; 

mysql_query($qry); 
echo $qry; 
?> 

出力に変換することができませんでした、次のとおりです。キャッチできる致命的なエラー:クラスDateIntervalのオブジェクトは、文字列

d21 = 2016-07-20 d7 = 2016-07-10 days = -10 days 

(!) Catchable fatal error: Object of class DateInterval could not be converted to string

それが適切に差を算出んが、データベースに更新することはできません! データベースを更新しようとすると致命的なエラーが発生します。 Plsヘルプ!アドバンス

+0

これが旧式のコードではない場合は、mysql_ *の代替方法を調べてください。これらは廃止され、PHP 7から削除されました。この行を見てみましょう: '$ qry =" update fresh_orders set DDays = '"。$ diff。"' ID = "。$ id。 ";"。 – ymas

答えて

1

おかげであなたは、データベースにdate_diff($date1,$date2)の結果を保存しようとしています。具体的には、文字列(sql)を作成しようとしています。

date_diffは、文字列として使用することはできませんDateIntervalタイプを生成 - あなたはときechoそれそれに->formatを呼び出す必要がある理由です。また、SQL文を作成する場所の->format('%d')に電話する必要があります。

あなたの出力はおそらくdays = -10 daysとは限りませんが、days = -10aysのようなものです。これは奇妙な方法で間隔をフォーマットしているからです - 一度見てくださいhttp://php.net/manual/en/dateinterval.format.php

+0

非常に完璧な説明をいただきありがとうございます。私はちょうどあなたがデータベースで更新することはできませんyou.Butで述べたようにエラーを修正しようとしました。とにかくそれができますか? $ date1 = date_create( "$ d21"); $ date2 = date_create( "$ d7"); $ interval = date_diff($ date1、$ date2); echo $ interval-> format( "%R%a days"); –

関連する問題