我之前知道这类问题,但我想要的是计算从时间和时间到时间的时差。我是新手所以不能让我自己处于专家模式我做了下面的代码和最后的面和错误,解决了这个“可捕获的致命错误:类mysqli_result的对象无法转换为C:\ wamp \ www \中的字符串第105行“testsite \ time_test.php”
<?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());
}
}
}
}
?>
答案 0 :(得分:0)
您的问题是您的$tmp
var是查询,而不是查询的结果。您必须先获取结果。这就是你得到这个错误的原因。但是你可以花时间使用PHP,而不必进行查询:
$tmp = date('H:i:s');
此外,您的$temp
变量将以整数形式生成。使用date
功能对其进行格式化:
$temp = date('H:i:s', strtotime($outtime) - strtotime($intime));
另请注意,您需要进行SQL注入:您的$uid
是一个不安全的Cookie。您可能希望将其转换为整数:
$uid = (int)$_COOKIE['uid'];
或者您可以更好地使用prepared statements