Php 如何解决Laravel中的数据更新错误

Php 如何解决Laravel中的数据更新错误,php,mysql,laravel,Php,Mysql,Laravel,我想更新注册表数据。因此,首先我为show数据创建了一个表。在这个表中,我包含了一个ViewForUpdate按钮,并传递了Id。当我单击该ViewForUpdate按钮时,它会在另一个页面中正确显示唯一的数据。输入新数据后,当我点击更新按钮时,显示此错误- 那么,如何解决这个问题呢 下面是RegViewUpdate.blade.php文件 学术表格结构 我相信您需要删除以下行: {{ method_field('PUT') }} 原因是您的路由设置为使用POST方法,因此未定义PUT路由。或

我想更新注册表数据。因此,首先我为show数据创建了一个表。在这个表中,我包含了一个ViewForUpdate按钮,并传递了Id。当我单击该ViewForUpdate按钮时,它会在另一个页面中正确显示唯一的数据。输入新数据后,当我点击更新按钮时,显示此错误-

那么,如何解决这个问题呢

下面是RegViewUpdate.blade.php文件

学术
表格结构


我相信您需要删除以下行:

{{ method_field('PUT') }}

原因是您的路由设置为使用POST方法,因此未定义PUT路由。或者,您可以将其更改为指定PUT方法(这是多余的,因为您已经指定了该方法),或者将{Form::open()}}标记与适当的路由一起使用。

我相信您会希望删除以下行:

{{ method_field('PUT') }}

原因是您的路由设置为使用POST方法,因此未定义PUT路由。或者,您可以将其更改为指定PUT方法(这是多余的,因为您已经指定了),或者将{Form::open()}}标记与适当的路由一起使用。

它应该是路由上的PUT方法

表单操作应为-

/编辑/{$users[0]->id}

和路线应为-

路由::put('/edit/{id}','RegViewController@edit');


因为您正在使用PUT方法发送id。

它应该是路由上的PUT方法

表单操作应为-

/编辑/{$users[0]->id}

和路线应为-

路由::put('/edit/{id}','RegViewController@edit');


因为您正在使用PUT方法发送id。

我发现您的代码存在两个问题

  • 在您的视图文件中
  • 在你的路线上
1) 替换视图文件中的表单标记,如下所示

{!! 
 Form::open(
               ['method' => 'PUT',
                'route' => ['update','id of data to update']
             ])
!!}

// place your form content here

{!! Form::close() !!}
2) 按以下方式更改您的路线

{!! 
 Form::open(
               ['method' => 'PUT',
                'route' => ['update','id of data to update']
             ])
!!}

// place your form content here

{!! Form::close() !!}
路由::PUT('update/{id}','controller_name@update_method_name');

  • 替换控制器\u name=您的控制器名称
  • replace update\u method\u name=更新的方法名称

我发现您的代码有两个问题

  • 在您的视图文件中
  • 在你的路线上
1) 替换视图文件中的表单标记,如下所示

{!! 
 Form::open(
               ['method' => 'PUT',
                'route' => ['update','id of data to update']
             ])
!!}

// place your form content here

{!! Form::close() !!}
2) 按以下方式更改您的路线

{!! 
 Form::open(
               ['method' => 'PUT',
                'route' => ['update','id of data to update']
             ])
!!}

// place your form content here

{!! Form::close() !!}
路由::PUT('update/{id}','controller_name@update_method_name');

  • 替换控制器\u name=您的控制器名称
  • replace update\u method\u name=更新的方法名称
试试这个:

RegViewUpdate.blade.php

试试这个:

RegViewUpdate.blade.php


现在它向我显示了这个错误-找不到/请求的URL/edit/38在此服务器上找不到。但是,数据仍然在数据库中。一个斜杠不起作用,我删除了斜杠。现在它开始工作了。向我显示一条成功的消息。但是,当我检查数据库时,它会显示更新之前的旧数据。这意味着仍然没有更新我的数据。如何修复?现在它向我显示了这个错误-找不到/请求的URL/edit/38在此服务器上找不到。但是,数据仍然在数据库中。一个斜杠不起作用,我删除了斜杠。现在它开始工作了。向我显示一条成功的消息。但是,当我检查数据库时,它会显示更新之前的旧数据。这意味着仍然没有更新我的数据。如何修复此问题??此$task和update是什么??我应该用什么替换吗?从{!!Form::open()!!}中删除$task,update是路由的名称,所以不需要更改它。这个$task和update是什么??我应该用什么替换吗?从{!!Form::open()!!}中删除$task,update是路由的名称,因此无需更改。它与action=“edit/{{$users[0]->id}”不兼容,我删除了斜杠。现在它开始工作了。向我显示一条成功的消息。但是,当我检查数据库时,它会显示更新之前的旧数据。这意味着仍然没有更新我的数据。如何修复此问题??由于原始代码,它只更新名称字段,您确定名称字段相同吗?是的,即使在显示成功消息后,名称字段也相同。现在我可以更新名称字段。。但是,用户名和密码没有更新。我使用了这个查询-update(['name'=>$name],'username'=>$username],'pw'=>$password]);只需将更新的附加字段添加到->update()方法的数组参数中:update(['name'=>$name,'username'=>$username,'pw'=>$password]);它不适用于action=“edit/{{$users[0]->id}}”,我删除了斜杠。现在它开始工作了。向我显示一条成功的消息。但是,当我检查数据库时,它会显示更新之前的旧数据。这意味着仍然没有更新我的数据。如何修复此问题??由于原始代码,它只更新名称字段,您确定名称字段相同吗?是的,即使在显示成功消息后,名称字段也相同。现在我可以更新名称字段。。但是,用户名和密码没有更新。我使用了这个查询-update(['name'=>$name],'username'=>$username],'pw'=>$password]);只需将更新的附加字段添加到->update()方法的数组参数中:update(['name'=>$name,'username'=>$username,'pw'=>$password]);
<html>
<head>

<body>

<form action="edit/{{$users[0]->id}}" method="post" enctype="multipart/form-data">

{{ method_field('PUT') }}
{{ csrf_field() }}

<div class="form-group">
    <label>Name : *</label>
    <input type="text" class="form-control" name="name" value="{{$users[0]->name}}" required>
  </div>

  <div class="form-group">
    <label>Username : *</label>
    <input type="text" class="form-control" name="username" value="{{$users[0]->username}}" required>
  </div>

  <div class="form-group">
    <label>Password : *</label>
    <input type="password" class="form-control" name="password" value="{{$users[0]->pw}}" required>
  </div>

  <div class="form-group">
    <label>Upload Profile Picture :</label>
    <input type="file" class="form-control-file" name="file_img" aria-describedby="fileHelp">
    <small id="fileHelp" class="form-text text-muted">If U Want , U Can Skip Upload A Profile Picture</small>
  </div>

  <input type="submit" class="btn btn-primary" name="submit" value="Update">

</form>

</body>
</html>
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use DB;

class RegViewController extends Controller
{

    public function index()
    {
        return view('RegView');
    }

    public function show($id) {
        $users = DB::select('select * from academic where id = ?',[$id]);
        return view('RegViewUpdate',['users'=>$users]);
    }

    public function edit(Request $request, $id)
    {
        $name = $request->input('name');
        try {
             DB::table('academic')
                  ->where('id', $id)
                  ->update(['name' => $name]);
             echo "Record updated successfully.<br/>";
        }  catch (\Exception $ex) {
             dd($ex);
        }
    }

}
Route::get('edit/{id}','RegViewController@show');
Route::put('edit/{id}','RegViewController@edit');