Я знаю этот тип вопросов, задаваемых ранее, но я хочу рассчитать разницу во времени и времени. Я новичок, поэтому не могу получить себя в экспертном режиме. Я выполнил приведенный ниже код, и в конце и в ошибке, в которой говорилось об этой «Исправляемой фатальной ошибке: объект класса mysqli_result не может быть преобразован в строку в C: \ wamp \ www \ testsite \ time_test.php on line 105 «
<?php
$con = mysqli_connect("localhost","root","","testsite") OR die("Could not connect: ".mysqli_error());
if (isset($_POST['isubmit'])) {
// Check the cookie exits or not
if (isset($_COOKIE['uid'])) {
$_COOKIE['uid'];
}
$uid = $_COOKIE['uid'];
echo "Hello user: ".$uid;
$isql = mysqli_query($con, "INSERT INTO `time`(`uid`, `intime`, `date`) VALUES ('$uid',CURTIME(),CURDATE())");
$lid = mysqli_insert_id($con);
echo $lid;
}
if (isset($_POST['osubmit'])) {
if(isset($_COOKIE['uid'])) {
$_COOKIE['uid'];
}
$uid = $_COOKIE['uid'];
$ssql= mysqli_query($con,"SELECT `intime`, `outtime`, `date` FROM `time` WHERE `uid`=".$uid);
while ($row = mysqli_fetch_array($ssql)) {
$intime = $row['intime'];
$outtime= $row['outtime'];
$date = $row['date'];
if(!empty($date)){
$tmp = mysqli_query($con, "SELECT CURTIME()");
$lid = mysqli_insert_id($con);
$temp= strtotime($outtime) - strtotime($intime);
echo $temp;
//below line is line number 105
$usql= "UPDATE `time` SET `outtime`= $tmp,`diff`= '$temp' WHERE `id`=".$lid." AND `uid`=".$uid;
$run = mysqli_query($con, $usql);
if (!$run) {
die("Update database query error: ". mysqli_error());
}
}
}
}
?>
Ваша проблема в том, что ваш $tmp
var — это запрос, а не результат запроса. Вы должны сначала получить результат. Вот почему вы получаете эту ошибку. Но вы можете получить время с помощью PHP, не выполняя запрос:
$tmp = date('H:i:s');
Кроме того, ваш $temp
переменная будет выглядеть как целое число. Использовать date
функция для его форматирования:
$temp = date('H:i:s', strtotime($outtime) - strtotime($intime));
Также имейте в виду, что вы подвержены SQL-инъекциям: ваш $uid
это печенье, которое не является безопасным. Возможно, вы захотите привести его к целому числу:
$uid = (int)$_COOKIE['uid'];
Или вы можете сделать это лучше и использовать prepared statements
Других решений пока нет …