【问题标题】:When updating password I am getting error in Laravel更新密码时,我在 Laravel 中遇到错误
【发布时间】:2019-12-04 08:24:57
【问题描述】:

我正在尝试更新用户密码,但出现错误。

语法错误或访问冲突:1064 您的 SQL 中有错误 句法; '其中name 为空' 在第 1 行(SQL:更新users 设置 其中name 为空)

控制器

public function passwordupdate(Request $request, $id)
{
    $user = User::find($id);
    $user->password = Hash::make($request->password);
    $user->save();

    return response()->json([
        'msg' => 'Password has been Updated',
    ]);
}

路线

Route::post('teachers/policy', 'UsersController@passwordupdate')

从视图中,我通过 Ajax 请求将用户 ID 和名称发送到控制器。

Ajax

$('.update-password').on('click', function (e) {
    let user_id = $('#update-password').val();
    console.log('Update password clicked!')
    e.preventDefault();
    $.ajax({
        type: "POST",
        dataType: 'json',
        data: $(this).serialize(),
        url: "/users/" + $('#update-password').attr("value"),
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        success: function (data) {
            if (data.msg) {
                $('#response').empty();
                $(".toast").toast('show');
                $('#response').append(data.msg);
            }
        }
    });
});

查看

<form id="password-form">
    <input type="hidden" value="">
    <table>
        <tr>
            <td class="text-nowrap">
                <select name="name" id="username" class="form-control border border-secondary border-dark" required>
                    <option selected value="">SELECT USER</option>
                    @foreach($users as $user)
                        <option value="{{ $user->name }}"> {{ $user->name }}</option>
                    @endforeach
                </select>
            </td>
            <td class="text-nowrap">
                <input type="text" name="password" placeholder="Type Password"
                       class="form-control border border-secondary border-dark">
            </td>
            <td class="text-nowrap">
                <button type="submit" class="btn btn-danger btn-sm update-password rounded text-center"
                        value="{{ $user->id }}" id="update-password">
                    <span class="fa fa-key"> </span> UPDATE PASSWORD
                </button>
            </td>
        </tr>
    </table>
</form>

【问题讨论】:

  • 是的,没错
  • 显示用户模型
  • 您的路线是在/teachers/policy 上的 POST,但您的请求作为 POST 发送到 /users/{id}
  • @apokryfos 我更新了到 /users/{id} 的路由仍然是同样的错误

标签: ajax laravel laravel-6


【解决方案1】:

您正在访问此端点:

/users/" + $('#update-password').attr("value") 

但是这个端点中没有$id作为url参数,所以你不会检索你的User

获取当前登录用户详细信息的方法是:

Auth::user()->id;

Auth 类将返回您当前登录的用户详细信息

【讨论】:

  • 我正在尝试以另一个用户的管理员身份更新密码,我正在从选择中获取该 ID。这就是我在控制器中传递 id 的原因。
  • 那么如果你dd($user)用户结果显示正确?
  • 那么问题不在于那里,而在于你上一堂课。向我们展示您的完整代码。
  • 我添加了有问题的视图,请检查。
【解决方案2】:

我觉得你应该试试这个

$('#update-password').val()

确保 id "update-password" 位于您的输入类型["password"]

希望回答你的问题

【讨论】:

    【解决方案3】:

    将 id 'update-password' 更改为 'update_password'

    ID 不应包含破折号(-)

    【讨论】:

      猜你喜欢
      • 2016-04-30
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多