0

我在 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')”部分时。弹出以下错误。

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

原因:注意:试图在第 125 行获取 C:\xampp\htdocs\fypweee_admin\FYPadminSideV3-debug\services\PorductstatushistoryService.php 中非对象的属性

致命错误:在第 125 行调用 C:\xampp\htdocs\fypweee_admin\FYPadminSideV3-debug\services\PorductstatushistoryService.php 中非对象的成员函数 toString()

这是否意味着 timeStampvar 需要采用 'YYYY-MM-dd HH:mm:ss' 的格式?

4

1 回答 1

3

你的$item对象有一个属性timeStamp。您假设 的timeStamp属性$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在构造函数中初始化并分配给$timeStamp变量。

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

于 2012-10-05T13:42:37.323 回答