PHPexcel/CI消息:正在尝试获取非对象的属性


PHPexcel / CI Message: Trying to get property of non-object?

使用PHPExcel创建Excel报告时,CodeIgniter出现问题。这是一条信息:

Message: Trying to get property of non-object Line 274 - Line 278

//查询

$sqlcoba="SELECT a.kd_mahasiswa, a.thn_angkatan, a.nim, a.nama, a.alamat, a.no_telp, b.nama_prodi, d.kd_dosen, d.nama_dosen, a.nama_ortu, a.alamat_ortu, a.pekerjaan, a.telp_ortu, a.status, a.kd_prodi, c.kd_fakultas, c.nama_fakultas
        FROM tbl_mahasiswa a
        JOIN ref_prodi b ON b.kd_prodi = a.kd_prodi
        LEFT JOIN ref_fakultas c ON c.kd_fakultas = b.kd_fakultas
        LEFT JOIN ref_dosen d ON d.kd_dosen = a.kd_dosen
        WHERE a.kd_prodi = $fil1 and a.thn_angkatan = $fil2"; 

//阵列

$sqlmhs=$this->db->query($sqlcoba);
foreach ($sqlmhs->result_array() as $rowcoba)
           {
                $nim       = $rowcoba->nim;      // line 274
                $nama      = $rowcoba->nama;
                $alamat   = $rowcoba->alamat;
                $no_telp  = $rowcoba->no_telp;
                $status   = $rowcoba->status;   // line 278
            }

//PhpExcel

$bar=3;
$no = 0;
$no = $no+1;
$objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('B'.$bar, $no)
        ->setCellValue('C'.$bar, $nim)
        ->setCellValue('D'.$bar, $nama)
        ->setCellValue('E'.$bar, $alamat)
        ->setCellValue('F'.$bar, $no_telp)
        ->setCellValue('G'.$bar, $status);
        $bar=$bar+1;

现在我已经有几天没有在CodeIgniter中这样练习了。。但我认为这是错误的

参考行号271和272

$sqlmhs=$this->db->query($sqlcoba);
foreach ($sqlmhs->result_array() as $rowcoba)

在第272行,您正在访问作为数组的对象。因此,在foreach循环中,您必须访问像$rowcoba['nim']这样的数组元素。

让我知道这是否有效。你可以参考https://ellislab.com/codeigniter/user-guide/database/results.html更多详细信息。

@Kuku你的脚本是真的。。但只是在数据之外。应该会有很多数据出来。显然在脚本中

$objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('B'.$bar, $no)
        ->setCellValue('C'.$bar, $nim)
        ->setCellValue('D'.$bar, $nama)
        ->setCellValue('E'.$bar, $alamat)
        ->setCellValue('F'.$bar, $no_telp)
        ->setCellValue('G'.$bar, $status);

必须放在前臂上。所以…

$bar=3;
$no = 0;
foreach ($sqlmhs->result_array() as $rowcoba)
            {                  
                $nim    = $rowcoba['nim'];    
                $nama   = $rowcoba['nama'];
                $alamat = $rowcoba['alamat'];
                $no_telp= $rowcoba['no_telp'];
                $status = $rowcoba['status'];
$objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('B'.$bar, $no)
        ->setCellValue('C'.$bar, $nim)
        ->setCellValue('D'.$bar, $nama)
        ->setCellValue('E'.$bar, $alamat)
        ->setCellValue('F'.$bar, $no_telp)
        ->setCellValue('G'.$bar, $status);
        $no = $no+1;
        $bar=$bar+1;
            }

谢谢。