调用操作错误

时间:2012-10-05 13:31:29

标签: php

我在php脚本中有以下功能,

public function createPorductstatushistory($item) {

    $stmt = mysqli_prepare($this->connection, "INSERT INTO $this->tablename (timeStamp, ProductDetail_idProduct, ProductStatus_idStatus) VALUES (?, ?, ?)");
    $this->throwExceptionOnError();

    mysqli_stmt_bind_param
    ($stmt, 'sii', 
    $item->timeStamp->toString('YYYY-MM-dd HH:mm:ss'), 
    $item->ProductDetail_idProduct, 
    $item->ProductStatus_idStatus);
    $this->throwExceptionOnError();

    mysqli_stmt_execute($stmt);     
    $this->throwExceptionOnError();

    $autoid = mysqli_stmt_insert_id($stmt);

    mysqli_stmt_free_result($stmt);     
    mysqli_close($this->connection);

    return $autoid;
}

但是,每次我转到“$ item-> timeStamp-> toString('YYYY-MM-dd HH:mm:ss')”部分。弹出以下错误。

  

调用操作时出错。检查你的操作   输入或服务器代码,并再次尝试调用该操作。

     

原因:注意:尝试获取非对象的属性   C:\ XAMPP \ htdocs中\ fypweee_admin \ FYPadminSideV3调试\ SERVICES \ PorductstatushistoryService.php   在第125行

     

致命错误:在非对象中调用成员函数toString()   C:\ XAMPP \ htdocs中\ fypweee_admin \ FYPadminSideV3调试\ SERVICES \ PorductstatushistoryService.php   在第125行

这是否意味着timeStamp var需要格式为'YYYY-MM-dd HH:mm:ss'?

1 个答案:

答案 0 :(得分:3)

您的$item对象有一个属性timeStamp。您假设timeStamp的{​​{1}}属性是一个对象。但错误告诉您$item不是对象。

这可能意味着您永远不会将对象的实例设置为timeStamp

示例:

timeStamp

这会导致这样的错误。您需要初始化class TimeStamp { time = '13:00'; } class Item { public $timeStamp; } $item = new Item(); $item->timeStamp->time; 并将其分配给您的TimeStamp变量。

$timeStamp

现在这应该有效,因为class TimeStamp { time = '13:00'; } class Item { public $timeStamp; public Item() { $this->$timeStamp = new TimeStamp(); } } $item = new Item(); $item->timeStamp->time; 在构造函数中初始化并分配给TimeStamp变量。

因此,请重新检查您的代码并确保您需要的所有内容都已实例化