根据用户id修改用户信息

img

img


从前端传过来一个用户id.,然后在控制器里面应该怎么编写,才能把传过来的id的相关信息显示在修改页面,进行修改?

控制器里面根据id去查询数据库。可以通过调用service来实现这个查询动作,service使用mybatis访问数据库,或者直接创建数据库连接,编写SQL查询数据库。可以把以下关键代码搬到你的程序中,放到合适的位置:

        String driver = "com.mysql.cj.jdbc.Driver";
        try {
            Class.forName(driver);
            System.out.println("加载驱动成功!");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        // 数据库连接参数
        String url = "jdbc:mysql://localhost:3306/mydatabase";
        String username = "your_username";
        String password = "your_password";
        // 查询用户信息SQL
        String query = "SELECT * FROM user WHERE id = " + id //id为前端传过来的用户Id;
        try (Connection connection = DriverManager.getConnection(url, username, password);
             Statement statement = connection.createStatement();
             ResultSet resultSet = statement.executeQuery(query)) {

            if (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id);
                System.out.println("Name: " + name);
            } else {
                System.out.println("未找到记录");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

用的是sts里面的h2数据库

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7620014
  • 这篇博客也不错, 你可以看下后端部分实现多表连接,通过员工id查找此员工对应的所有角色
  • 除此之外, 这篇博客: 怎么利用浏览器地址栏进行传参和取参中的 比如要获取网页中标签的id,且是动态获取标签的id这里就需要转字符串了。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •  <script>
            var answer = document.getElementById(newStr[i]);
        	answer.style.display="block";
     </script>
    
  • 您还可以看一下 李月喜老师的企业微信开发第三方应用开发篇课程中的 推广二维码,推广包id生成安装链接【后端】小节, 巩固相关知识点
  • 以下回答由chatgpt基于相关博客总结生成:

    我将回答问题1:

    为了实现根据前端传来的用户id,展示需要修改的用户信息并将其渲染在前端的修改界面上,需要先编写控制器的相应函数。假设我们有一个User模型,可以先在控制器中定义如下代码:

    public function editUser($id){
      //首先通过id从数据库中查询该用户的信息
      $user = User::find($id);
      //将查询结果放入视图中
      return view('editUser',compact('user'));
    }
    

    这里定义了一个editUser函数,它接受一个$id参数,作为要修改的用户的id。在函数中通过该id从数据库中查询用户信息,并将查询结果放入名为editUser的视图中,在该视图中可以通过$user变量访问到查询结果。

    接下来需要创建editUser视图,可以在resources/views目录下创建一个名为editUser.blade.php的文件,编写如下代码:

    <form action="{{route('updateUser',$user->id)}}" method="post">
      @csrf
      <label>用户名:</label>
      <input type="text" name="name" value="{{$user->name}}"><br>
      <label>邮箱:</label>
      <input type="email" name="email" value="{{$user->email}}"><br>
      <button type="submit">保存</button>
    </form>
    

    该视图中包含一个表单,表单提交的目标为updateUser路由,提交方法为POST。在表单中,使用了Laravel中的CSRF保护机制,用于防止跨站请求伪造攻击。表单中包含用户名和邮箱两个输入框,它们的初始值均为通过控制器中查询到的用户信息。最后还有一个保存按钮。

    在控制器中还需要定义updateUser方法,用于更新数据库中的用户信息。可以编写如下代码:

    public function updateUser(Request $request, $id){
      //首先通过id查找要更新的用户
      $user = User::find($id);
      //将用户的name和email字段更新为表单提交的值
      $user->name = $request->input('name');
      $user->email = $request->input('email');
      //保存更改
      $user->save();
      //重定向到用户列表页面或其他目标页面
      return redirect()->route('users');
    }
    

    该方法接受一个Request参数,用于接收表单提交的数据,以及一个$id参数,用于指定要更新的用户。在函数中首先通过$id从数据库中查询到该用户,然后将用户的name和email字段更新为表单提交的值,并保存更改。最后需要重定向到用户列表页面或其他目标页面。

    最后需要定义路由,将editUser函数和updateUser函数与控制器中的对应方法关联起来。可以在routes/web.php中定义如下路由:

    Route::get('/editUser/{id}','UserController@editUser')->name('editUser');
    Route::post('/updateUser/{id}','UserController@updateUser')->name('updateUser');
    

    通过name('editUser')和name('updateUser')给路由命名,可以在其他地方使用route函数生成对应的链接,充分利用Laravel的路由系统。

    以上就是完整的解决方案,通过控制器中的editUser函数根据传递来的$id查询到用户信息并将其放入视图中,实现了在前端展示需要修改的用户信息。而通过updateUser函数可以将表单提交的值更新到数据库中,实现了修改操作的最终目的。