可捕获的致命错误:类DateTime的对象无法转换为字符串

可捕获的致命错误:类DateTime的对象无法转换为字符串

问题描述:

I am getting the above error in the last line of code ,I have tried answers but that doesnt seems to work

if (isset($_GET['logout'])) {
    $name = $_SESSION["username"];
    date_default_timezone_set('Asia/Kolkata');
    $today = date('Y-m-d');
    $time = new DateTime(date('H:i:s'));

    $statement = $db->prepare("SELECT  `logintime` FROM `attendance` WHERE empid=? AND date_t=?");
    $statement->bind_param("ss", $name, $today);
    $statement->execute();
    $statement->bind_result($logintime);
    while ($statement->fetch()) {

    }
    $logintime = new DateTime($logintime);

    $interval = $logintime->diff($time);

    $hours = $interval->format('%h');
    $minutes = $interval->format('%i');
    $workinghours = $hours + $minutes / 60;


    $stmt = $db->prepare("UPDATE `attendance` SET `logouttime`=? ,`workinghours`=?  WHERE empid=? AND date_t=?");
    $stmt->bind_param("ssss", $time, $workinghours, $name, $today);
    $run = $stmt->execute();
}

我在最后一行代码中遇到上述错误,我已经尝试过答案,但这似乎不起作用

  if(isset($ _ GET ['logout'])){
 $ name = $ _SESSION [“username”]; 
 date_default_timezone_set('Asia / Kolkata')  ; 
 $ today = date('Ym-d'); 
 $ time = new DateTime(date('H:i:s')); 
 
 $ statement = $ db-> prepare(“  SELECT`logintime` FROM`adtendance` WHERE empid =?AND date_t =?“); 
 $ statement-> bind_param(”ss“,$ name,$ today); 
 $ statement-> execute();  
 $ statement-> bind_result($ logintime); 
 while($ statement-> fetch()){
 
} 
 $ logintime = new DateTime($ logintime); 
 
 $ interval  = $ logintime-> diff($ time); 
 
 $ hours = $ interval-> format('%h'); 
 $ minutes = $ interval-> format('%i');  
 $ workinghours = $ hours + $ minutes / 60; 
 
 
 $ stmt = $ db-> prepare(“UPDATE`adtendance` SET`logouttime` =?,`workinghours` =?WHERE empid =?  AND date_t =?“); 
 $ stmt  - > bind_param(“ssss”,$ time,$ workinghours,$ name,$ today); 
 $ run = $ stmt-> execute(); 
} 
  code>  pre> \  n  div>

you have to use the format method to convert your DateTime object into something MySQL can use.

date_format($time,'Y-m-d H:i:s')

or

$time->format('Y-m-d H:i:s')

So...

$timeAsString = $time->format('Y-m-d H:i:s');
$stmt->bind_param("ssss",$timeAsString,$workinghours,$name,$today);