2017-09-16 60 views
0

我收到上述錯誤的代碼的最後一行,我已經試過的答案,但,這並不似乎工作開捕致命錯誤:類的DateTime的對象無法轉換爲字符串

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(); 
} 
+0

哪裏是錯誤? –

+0

在最後一行$ run = $ stmt-> execute() – gANDALF

+0

您必須使用[format](http://php.net/manual/en/datetime.format.php)方法 – Scuzzy

回答

0

你必須使用format方法將DateTime對象轉換爲MySQL可以使用的東西。

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

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

所以......

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

它是給我一個錯誤只有變量應該通過引用傳遞 – gANDALF

+0

看到更新,oops :)我主要使用綁定與PDO – Scuzzy

+1

哈哈謝謝,它的工作! – gANDALF

相關問題