Php 将数据从codeigniter中的多个表导出到excel

Php 将数据从codeigniter中的多个表导出到excel,php,mysql,sql,excel,codeigniter,Php,Mysql,Sql,Excel,Codeigniter,我想将数据从多个表中导出到excel中,我根据这三个表的要求编写了逻辑,并保存在模型中的单个函数中。我在控制器中调用这个函数,我只对一个表使用了这个方法,但对多个表没有 This is MODAL function update_wallet_pbo(){ $query1 = $this->db->query(" SELECT * FROM privilege_customer WHERE accountStatus = 'A' "); $sno = 1; if

我想将数据从多个表中导出到excel中,我根据这三个表的要求编写了逻辑,并保存在模型中的单个函数中。我在控制器中调用这个函数,我只对一个表使用了这个方法,但对多个表没有

This is MODAL
function update_wallet_pbo(){
$query1 = $this->db->query(" SELECT * FROM privilege_customer WHERE accountStatus = 'A' ");
     $sno = 1;
      if($query1->num_rows() > 0){
            foreach($query1->result() as $row1){
                $acc = $row1->accountNum;
                $PBONum = $row1->PBONum;
                echo 'S no. - '.$sno.' PBO No. = '.$PBONum.' Acc No. = '.$acc.'<br/>';
                $total_balance = 0 ;

                $query3 = $this->db->query(" SELECT * FROM `pbo_purchase_wallet` WHERE PBONum = '$PBONum' ORDER by date ASC ");
                if($query3->num_rows() > 0){
                    foreach($query3->result() as $row3){
                        if($row3->type == 'Credited'){
                            $total_balance = round( floatval($total_balance) , 2 ) + round( floatval($row3->transactionAmount) , 2 );

                            echo 'ID = '.$row3->id.'&nbsp;&nbsp;&nbsp; PS no. = '.$row3->PSNum.'&nbsp;&nbsp;&nbsp; Credit = '.$row3->transactionAmount.'&nbsp;&nbsp;&nbsp; Debit = 0 &nbsp;&nbsp;&nbsp; Balance Amount = '.$row3->totalAmount.' &nbsp;&nbsp;&nbsp; Actual Balance Amount = '.$total_balance.'<br/>';
                        }
                        else if($row3->type == 'Debited'){
                            $total_balance = round( floatval($total_balance) , 2 ) - round( floatval($row3->transactionAmount) , 2 );

                            echo 'ID = '.$row3->id.'&nbsp;&nbsp;&nbsp; PS no. = '.$row3->PSNum.'&nbsp;&nbsp;&nbsp; Credit = 0 &nbsp;&nbsp;&nbsp; Debit = '.$row3->transactionAmount.'&nbsp;&nbsp;&nbsp; Balance Amount = '.$row3->totalAmount.' &nbsp;&nbsp;&nbsp; Actual Balance Amount = '.$total_balance.'<br/>';
                        }

                        /*$data = array( 'totalAmount' => $total_balance);
                        $this->db->update('stockist_sales_wallet_additions', $data);*/
                    }
                }

                $query4 = $this->db->query(" SELECT * FROM `pbo_wallet` WHERE PBONum = '$PBONum' ");
                if($query4->num_rows() > 0){
                    foreach($query4->result() as $row4){
                        $purchase_wallet = round( floatval($row4->purchaseWallet) , 2 );
                        if($purchase_wallet <= $total_balance+1 && $purchase_wallet >= $total_balance-1){
                            echo '<b style="color:blue;">---------------------------Correct-----------------------</b><br/>';

                            echo 'Purchase Wallet = '.$purchase_wallet.'&nbsp;&nbsp;Total Balance = '.$total_balance.'<br/>';

                            echo '<b style="color:blue;">---------------------------Correct-----------------------</b><br/>';
                        }
                        else{
                            echo '<b style="color:red;">---------------------------Wrong-----------------------</b><br/>';

                            echo 'Purchase Wallet = '.$purchase_wallet.'&nbsp;&nbsp;Total Balance = '.$total_balance.'<br/>';

                            echo '<b style="color:red;">---------------------------Wrong-----------------------</b>';
                        }
                    }
                }

                $sno++;
                echo '<br/><br/><br/>';

                if($sno == 10){
                    return 1;
                }
            }
        }
    }

那么所有这些代码到底有什么问题呢?假设我在上面的模式中只从“pbo\u purchase\u wallet”中提取一个查询“SELECT*”,它工作正常,但我在模式中作为一个函数从三个表中提取数据,存在问题,并且没有将数据导出到Excel,这应该不会是一个问题,如果重新构造代码以使用三个不同的表。毕竟,这种模式是为了什么,为什么要回显这么多东西来获得Excel导出?我只是在没有Excel的情况下打印出来。这就是为什么我要用Echot还有什么问题?您不能将控制器部件包装在
for
循环中,以访问不同的数据库并将它们打印到不同的表中吗?
        function update_wallet_pbo(){           
        $this->load->model("AdminModel");
        $this->load->library("excel");
        $object = new PHPExcel();

        $object->setActiveSheetIndex(0);

        $table_columns = array("Name", "Address", );

        $column = 0;

        foreach($table_columns as $field)
        {
         $object->getActiveSheet()->setCellValueByColumnAndRow($column, 1, $field);
         $column++;
        }

        $employee_data = $this->AdminModel->update_wallet_pbo();

        $excel_row = 2;

        foreach($employee_data as $row)
        {
         $object->getActiveSheet()->setCellValueByColumnAndRow(0, $excel_row, 'dsf');
         $object->getActiveSheet()->setCellValueByColumnAndRow(1, $excel_row, 'sadf');

         $excel_row++;
        }

        $object_writer = PHPExcel_IOFactory::createWriter($object, 'Excel5');
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="Employee Data.xls"');
        $object_writer->save('php://output');