PHP OOP更新记录,但显示错误消息

时间:2018-11-14 12:38:45

标签: php mysql oop

我正在使用PHP OOP制作登录/注册系统。现在,我要做的是创建一个名为update.php的页面来更新用户名:

<form action="" method="POST">
<div class="field">
    <label for="name">Name:</label>
    <input type="text" name="name" value="<?php echo escape($user->data()->name); ?>">

    <input type="submit" value="Update">
    <input type="hidden" name="token" value="<?php echo Token::generate(); ?>">
</div>

然后我将这些代码添加为操作:

if($validation->passed())
{
    try
    {
        $user->update(array(
        'name' => Input::get('name')
    ));

    Session::flash('home','Your details have been updated');
    Redirect::to('index.php');
    }
    catch(Exception $e)
    {
        die($e->getMessage());
    }
}
else
{
    foreach($validation->errors() as $error)
    {
        echo $error, '</br>';
    }
}

这是 User 类中的update方法:

    public function update($fields = array(),$id = NULL)
    {
        if(!$id && $this->isLoggedIn())
        {
            $id = $this->data()->id;
        }
        if(!$this->_db->update('users', $id, $fields)) 
        {
            throw new Exception('There was a problem updating');
        }
    }

因此,每当我尝试更新帐户名称时,都会说更新时出现问题,但它已经更新了帐户名称。因此,应该显示消息您的详细信息

1 个答案:

答案 0 :(得分:0)

public function update($fields = array(),$id = NULL)
    {
        if(!$id && $this->isLoggedIn())
        {
            $id = $this->data()->id;
        }
        try
        {
            !$this->_db->update('users', $id, $fields);
        }
        catch(Exception $e)
        {
            die($e->getMessage());
        }
    }