【问题标题】:Codeigniter can not delete recordCodeigniter 无法删除记录
【发布时间】:2023-08-30 18:00:01
【问题描述】:

我试图在我的网络上使用 codeigniter,我不知道为什么,但我无法从我的数据中删除用户,我认为我的代码出错了,但我找不到它。你能看看并帮我解决这个问题吗? 这是我的控制器代码:

    function user_delete($id_user){
    $this->load->model('membership_model');
    if ($this->membership_model->isAdmin())
    {
        $this->membership_model->deleteUser();
        redirect('/site/admins_area');
    }else
        $this->load->view('not_logged_in_view');
}

这是我的模型代码:

function deleteUser(){
    $this->db->where('id_user', $this->uri->segment(3));
    $this->db->delete('user');
}

在我的视图代码中,当管理员点击删除时,它将引导他们到控制器,如下所示:

<button type="button" class="btn btn-danger" data-toggle="modal" data-target="#myModal">Delete</button></center>
<div class="modal fade" id="myModal" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
    <div class="modal-header">
      <button type="button" class="close" data-dismiss="modal">&times;</button>
      <h4 class="modal-title">Modal Header</h4>
    </div>
<div class="modal-body">
      <p>Do you want to delete it?</p>
    </div>
    <div class="modal-footer">
      <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      <a href="<?php echo base_url();?>site/user_delete" class="btn btn-danger btn-sm" role="button">Delete</a>
    </div>
  </div>

</div>

你能帮忙吗?

【问题讨论】:

  • 在你的控制器中调用 user_delete() 时在哪里传递 $id_user ?
  • 我还没明白你的意思。请问什么意思?
  • 你在哪里将 $id_user 变量传递给这个 user_delete() 函数?
  • 它来自我的观点
  • &lt;input type="hidden" name="id" value="&lt;?php echo $ud-&gt;id_user; ?&gt;"&gt;

标签: php codeigniter


【解决方案1】:

我认为你的链接有问题

 <a href="<?php echo base_url();?>site/user_delete" class="btn btn-danger btn-sm" role="button">Delete</a>

使用这个:

<a href="<?php echo base_url('site/user_delete');?>" class="btn btn-danger btn-sm" role="button">Delete</a>

如果错误仍然存​​在。请提供错误。

【讨论】:

  • 它有一个错误说:使用未定义的常量 user_delete 假设为 user_delete
  • 那么,站点是您的控制器的名称吗?只是确认一下。
  • 是的,我的控制器是站点。我确实像你说的那样进行了编辑,但它有一个错误未定义有价值的用户 ID
  • 把 url 放在 base_url 里面没有区别。这只是为了更好的语法。
【解决方案2】:

你的控制器

$this->membership_model->deleteUser($id_user);

在你的模型上

function deleteUser($id_user){
   $this->db->where('id_user', $id_user);
    $this->db->delete('user');
}

【讨论】:

  • 请打印$id_user
  • can not echo $id_user, Missing argument 1 for Site::user_delete() 这是错误,你能帮忙
  • 你没有在 url 上发送任何 agument 尝试像 user_delete/2 这样的 url // 2 是一个 user_id
  • 我该如何解决这个问题,你可以吗?
  • 在你看来 删除 $user_id 是你要删除的用户ID
【解决方案3】:

您的代码正在运行,只是您可能没有正确链接您的路线。您正在尝试删除 URL 段,没有段 3 作为 ID。

为了获得此查询的正确 URL,您的 URL 应如下所示:

 echo base_url('site/user_delete/'.$user_id);

假设您已经知道如何将变量解析为视图,这应该不难。另请注意,您需要更改当前路线,如下所示:

 $route['site/user_delete']  = "controllername/function";

  $route['site/user_delete/(:num)' = "controllername/function/$1";

这将允许通过 URL 发送参数。除此之外,您还需要更改模型以接受参数而不是直接段。

【讨论】: