2016-09-21 48 views
0

我的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"); 
} 

我得到以下错误:

Fatal error: Call to a member function modify() on a non-object in /srv/websites/kabouter/htdocs/test/test.php on line 30

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

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

到:

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

为什么我得到$ allow_times1的错误,而$ allow_times1和$ allow_times2具有相同的回显输出?欢迎所有帮助!提前致谢。

+0

你确定爆炸是在30线? – RiggsFolly

+0

也许尝试明确地将'$ value-> allow_time'强制转换为字符串:'$ allow_times1 =(string)$ value-> allow_time;' –

+0

为什么要做'$ timeFrom =“$ my_Array:00”;'只需修改'createFromFormat('H:i',$ timeFrom) - > modify(“+ 5分钟”)的格式;' – RiggsFolly

回答

0

我觉得$allow_times1是一个对象,而不是一个字符串,当你调用echo $allow_times1,然后它变成调用allow_times1 $对象

+0

我怀疑它。它是一张桌子上的一列,他回应它 – RiggsFolly

0

__toString()方法,我终于找到了如何解决这个问题。

PHP代码解决方案:

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

有了上面的代码将解决这个问题.... 奇怪的是,$ allow_times1增加了一个“空间” ......

相关问题