<?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;
?>
Вывод следующий:
d21 = 2016-07-20 d7 = 2016-07-10 days = -10 days
(!) Исправляемая фатальная ошибка: объект класса DateInterval не может быть
преобразован в строку
Он правильно рассчитывает разницу, но не может обновиться в базе данных!
Выдает фатальную ошибку при попытке обновления в базе данных. Пожалуйста, помогите!
Заранее спасибо
Вы пытаетесь сохранить результат date_diff($date1,$date2)
в базу данных. В частности, вы пытаетесь построить строку (SQL) с ним.
date_diff
создает тип DateInterval, который нельзя использовать в качестве строки — вот почему вам нужно вызвать ->format
на это, когда ты echo
Это. Вам также нужно позвонить ->format('%d')
где вы строите заявление SQL.
Ваш вывод, вероятно, не говорит days = -10 days
, но что-то вроде days = -10ays
, Это потому, что вы форматируете интервал странным образом — взгляните на http://php.net/manual/en/dateinterval.format.php
Других решений пока нет …