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

Codeigniter删图报错:Trying to get property 'gambar' of non-object

解决 "Trying to get property 'gambar' of non-object" 错误

嘿,这个错误其实很好排查,我来给你一步步分析和解决:

错误原因

你这段代码的问题在于链式调用时没有检查查询结果是否存在:

$this->db->get_where('artikel', array('id'=>$id))->row()->gambar;

当get_where没有找到对应id的artikel记录时,row()会返回null,这时候你直接访问null->gambar,就会触发这个“获取非对象的属性”错误。另外,就算找到记录,如果gambar字段是空的,直接unlink也会出问题。

修复后的代码

我们需要在每一步都做安全校验,避免意外错误:

private function hapusGbr($id){ 
    // 先执行查询并获取结果对象
    $query = $this->db->get_where('artikel', array('id'=>$id));
    
    // 检查是否存在匹配的记录
    if ($query->num_rows() > 0) {
        $artikel = $query->row();
        
        // 确保gambar字段不为空
        if (!empty($artikel->gambar)) {
            $filePath = "gambar/" . $artikel->gambar;
            
            // 检查文件是否真的存在,再执行删除
            if (file_exists($filePath)) {
                unlink($filePath);
            } else {
                // 可选:记录日志,提示文件不存在
                log_message('warning', '尝试删除不存在的文件:' . $filePath);
            }
        }
    } else {
        // 可选:记录日志,提示未找到对应文章
        log_message('warning', '未找到ID为' . $id . '的文章,无法删除图片');
    }
}

额外注意事项

  • 路径正确性:如果是用CodeIgniter框架(从代码风格看很像),建议用框架提供的常量拼接绝对路径,比如$filePath = FCPATH . "gambar/" . $artikel->gambar;,避免相对路径导致的找不到文件问题。
  • 权限问题:确保服务器进程(比如www-data)拥有gambar目录的写入/删除权限,不然就算代码正确,unlink也会失败。
  • 日志记录:添加日志可以帮你快速定位问题,比如文件不存在、记录不存在这类情况,方便后续排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:56:07