致命错误:在非对象上调用成员函数modify()

时间:2016-09-21 09:02:31

标签: php

我的PHP代码是:

require_once("config.inc.php");
$conn = mysqli_connect(DB_SERVER, DB_USER, DB_PASS, DB_NAME);
mysqli_set_charset($conn, 'utf8');

$username = "Michael";
$result = $conn->query("
    SELECT *
    FROM gebruikers, afdelingen
    WHERE gebruikers.afdeling_id = afdelingen.afdeling_id 
    AND gebruikersnaam = '".$username."'
");

$value = mysqli_fetch_object($result);
$allow_times1 = $value->allow_time;
echo $allow_times1; // output: 09:00,14:00,17:20,21:00

$allow_times2 = "09:00,14:00,17:20,21:00";
echo $allow_times2; // output: 09:00,14:00,17:20,21:00

$myArray = explode(',', $allow_times1);
foreach($myArray as $my_Array) {
    $timeFrom = "$my_Array:00";
    $date = DateTime::createFromFormat('H:i:s', $timeFrom)->modify("+5 minutes");
}

我收到以下错误:

  

致命错误:在非对象中调用成员函数modify()   第30行/srv/websites/kabouter/htdocs/test/test.php

如果我改变了,我就不会得到错误:

$myArray = explode(',', $allow_times1);

为:

$myArray = explode(',', $allow_times2);

为什么我用$ allow_times1得到错误,而$ allow_times1和$ allow_times2有相同的echo-output?欢迎所有帮助!提前谢谢。

2 个答案:

答案 0 :(得分:0)

我认为$allow_times1是一个对象,而不是一个字符串,当你调用echo $allow_times1时,它会转而调用$ allow_times1对象的__toString()方法

答案 1 :(得分:0)

我终于找到了解决问题的方法。

PHP代码解决方案:

$allow_times1 = substr($allow_times1, 0, -1);

使用上面的代码,它将解决问题.... 奇怪的是,$ allow_times1添加了一个"空间" ...