如何更新多个字段?

时间:2015-03-11 09:45:16

标签: php mysql pdo

我收到了一些与未定义profile_address相关的错误。这个当前代码的大部分来自1值的工作更新,我已经尝试添加更新第二个值,我想扩展它以更新另外10个值。

我认为问题是我的应用程序中没有正确解析变量。

我最初尝试将其添加到数组中,如模型中所示,但这并没有奏效。

我认为这是一个相当微不足道的问题,我确信它是一个我尚未想到的简单解决方案。

查看:

<form action="<?php echo Config::get('URL'); ?>login/editUserProfile_action" method="post">
    <label for="comment">Name</label>
    <textarea class="form-control" rows="3" name="profile_name"></textarea>
    <br>
    <label for="comment">Address</label>
    <textarea class="form-control" rows="3" name="profile_address"></textarea>
</form>

控制器:

    public function editUserProfile()
{
    Auth::checkAuthentication();
    $this->View->render('login/editUserProfile');
}

/**
 * Edit user profile (perform the real action after form has been submitted)
 * Auth::checkAuthentication() makes sure that only logged in users can use this action and see this page
 */
// make this POST
public function editUserProfile_action()
{
    Auth::checkAuthentication();
    UserModel::editUserProfile(Request::post('profile_name', 'profile_address'));
    Redirect::to('login/editUserProfile');
}

型号:

    public static function editUserProfile($profile_name, $profile_address)
{

    // write to database, if successful ...
    if (UserModel::saveUserProfile(Session::get('user_id'), $profile_name, $profile_address)) {
        Session::set(array('profile_name', $profile_name, 'profile_address', $profile_address));
        Session::add('feedback_positive', Text::get('FEEDBACK_EMAIL_CHANGE_SUCCESSFUL'));
        return true;
    }
    Session::add('feedback_negative', Text::get('FEEDBACK_UNKNOWN_ERROR'));
    return false;
}   
/**
 * Writes new data to database
 *
 * @param $user_id int user id
 *
 * @return bool
 */
public static function saveUserProfile($user_id, $profile_name, $profile_address)
{
    $database = DatabaseFactory::getFactory()->getConnection();

    $query = $database->prepare("UPDATE users SET profile_name = :profile_name, profile_address = :profile_address WHERE user_id = :user_id LIMIT 1");
    $query->execute(array(':profile_name' => $profile_name, ':profile_address' => $profile_address, ':user_id' => $user_id));
    $count =  $query->rowCount();
    if ($count == 1) {
        return true;
    }
    return false;
}

1 个答案:

答案 0 :(得分:0)

问题在于数组,我通过执行以下操作解决了问题:

public function editUserProfile_action()
{
Auth::checkAuthentication();
UserModel::editUserProfile(Request::post('profile_name'),
Request::post('profile_address'));
Redirect::to('login/editUserProfile');
}

通过在模型中做同样的事情来解决这个问题。