You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodeIgniter中使用href删除记录失效问题求助

问题排查与修复方案

嘿,这问题的核心原因一眼就能看出来,咱们一步步来解决:

1. 视图层的致命错误:嵌套PHP标签导致URL解析异常

你在视图的echo语句里错误嵌套了<?php ?>标签——PHP不会解析这种嵌套的标签,反而会把它当成普通字符串输出,最终导致URL里出现了编码后的%3C?php%20echo%20base_url();?%3E。

错误代码:

<?php 
echo "<td class='text-center'><div class='btn-group btn-group-xs'><a href='#' data-logid='" . $org->id . "' data-target='#editGroups' data-toggle='modal' title='Edit' class='open_modal btn btn-default'><i class='fas fa-edit'></i></a>"; 
echo "<a href='<?php echo base_url();?>/Organisation/delete_org?id=$org->id' class='btn btn-danger confirmation'><i class='fas fa-times'></i></a></div></td></tr>"; 
?>

修正后的视图代码:

直接在当前PHP上下文里拼接base_url(),不需要再开启新的PHP标签:

<?php 
echo "<td class='text-center'><div class='btn-group btn-group-xs'>
        <a href='#' data-logid='" . $org->id . "' data-target='#editGroups' data-toggle='modal' title='Edit' class='open_modal btn btn-default'>
          <i class='fas fa-edit'></i>
        </a>
        <a href='" . base_url('Organisation/delete_org?id=' . $org->id) . "' class='btn btn-danger confirmation'>
          <i class='fas fa-times'></i>
        </a>
      </div></td></tr>"; 
?>

或者用更简洁的双引号变量解析写法(注意用大括号包裹变量):

<?php 
$deleteUrl = base_url("Organisation/delete_org?id={$org->id}");
echo "<td class='text-center'><div class='btn-group btn-group-xs'>
        <a href='#' data-logid='{$org->id}' data-target='#editGroups' data-toggle='modal' title='Edit' class='open_modal btn btn-default'>
          <i class='fas fa-edit'></i>
        </a>
        <a href='{$deleteUrl}' class='btn btn-danger confirmation'>
          <i class='fas fa-times'></i>
        </a>
      </div></td></tr>"; 
?>

2. 控制器层的小问题:未正确获取ID参数

你的delete_org函数里直接使用了未定义的$id变量,会导致PHP报错,必须先获取URL传递的ID:

修正后的控制器代码(GET参数方式):

function delete_org() { 
    // 获取URL中的?id=3参数
    $id = $this->input->get('id');
    // 确保ID存在再执行删除
    if (!empty($id)) {
        $this->Org_model->org_delete($id); 
    }
    redirect('Organisation/organisation'); 
}

更推荐的RESTful风格写法(URL分段传递ID):

如果把链接改成base_url("Organisation/delete_org/{$org->id}"),同时在routes.php添加路由规则:$route['Organisation/delete_org/(:num)'] = 'Organisation/delete_org/$1';,控制器可以写成:

function delete_org($id) { 
    $this->Org_model->org_delete($id); 
    redirect('Organisation/organisation'); 
}

这种方式更规范,也避免了GET参数的潜在问题。

3. 模型层代码没问题(可选优化)

你的模型代码逻辑是对的,可选添加返回值以便控制器判断删除是否成功:

function org_delete($id) { 
    $this->db->where('id', $id);
    return $this->db->delete('organisation'); // 返回删除是否成功的布尔值
}

总结

先修复视图里的链接写法(去掉嵌套的PHP标签),再确保控制器正确获取ID参数,这样点击删除按钮后就能正常跳转到正确的URL,执行删除操作了。

内容的提问来源于stack exchange,提问作者suresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 04:22:01