2017-04-03 135 views
0

我試圖從excel格式的複選框選擇數據庫中下載記錄。我得到一個致命錯誤:PHP-致命錯誤:調用一個非對象的成員函數dbRows()

Call to a member function dbRows() on a non-object.. on $res = $DB->dbRows($sql);

上下載的excel文件。

$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to mysql:<br>" . mysql_error() . "<br>" . mysql_errno()); 

$Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno()); 


//$sql = "Select * from $DB_TBLName WHERE Delivery_no = '$_REQUEST[Delivery_no]'" ; 


    $checks = implode(",",array_map('strval', $_REQUEST['check'])); 

    if(isset($_POST['submit'])) 
      { 
     if(!empty($_POST['check'])) 
        { 


      global $DB; 
      header("Content-type: application/vnd.ms-excel"); 
      header("Content-Disposition: attachment; filename=download.xls"); 
      header('Cache-Control: max-age=0'); 
      require_once 'protectExcel/Classes/PHPExcel.php'; 
      require_once 'protectExcel/Classes/PHPExcel/IOFactory.php'; 


      $objPHPExcel = new PHPExcel(); 
      $objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); 
      $objPHPExcel->getActiveSheet()->getProtection()->setInsertRows(true); 

      $objPHPExcel->setActiveSheetIndex(0); 
      $objPHPExcel->getActiveSheet()->setTitle('Favorite'); 
      /*$objPHPExcel->getActiveSheet()->mergeCells('A1:R1');*/ 
      $objPHPExcel->getActiveSheet()->setCellValue('A1','id'); 
      $objPHPExcel->getActiveSheet()->setCellValue('B1','Brand'); 
      $objPHPExcel->getActiveSheet()->setCellValue('C1','Bill_date'); 
      $objPHPExcel->getActiveSheet()->setCellValue('D1','Invoice_no'); 
      $objPHPExcel->getActiveSheet()->setCellValue('E1','Bill_to_party'); 
      $objPHPExcel->getActiveSheet()->setCellValue('F1','Product'); 
      $objPHPExcel->getActiveSheet()->setCellValue('G1','Category'); 
      $objPHPExcel->getActiveSheet()->setCellValue('H1','Category_product'); 
      $objPHPExcel->getActiveSheet()->setCellValue('I1','Barcode'); 
      $objPHPExcel->getActiveSheet()->setCellValue('J1','Size'); 
      $objPHPExcel->getActiveSheet()->setCellValue('K1','Shade'); 
      $objPHPExcel->getActiveSheet()->setCellValue('L1','MRP'); 
      $objPHPExcel->getActiveSheet()->setCellValue('M1','Quantity'); 
      $objPHPExcel->getActiveSheet()->setCellValue('N1','Item_code'); 
      $objPHPExcel->getActiveSheet()->setCellValue('O1',' Material_desc'); 
      $objPHPExcel->getActiveSheet()->setCellValue('P1',' CD'); 
      $objPHPExcel->getActiveSheet()->setCellValue('Q1','TD'); 
      $objPHPExcel->getActiveSheet()->setCellValue('R1','SP.CD'); 
      $objPHPExcel->getActiveSheet()->setCellValue('S1','Rate'); 
      $objPHPExcel->getActiveSheet()->setCellValue('T1','Net_amount'); 
      $objPHPExcel->getActiveSheet()->setCellValue('U1','Delivery_no'); 

      $row =2; 

      $sql = "Select * from $DB_TBLName WHERE Delivery_no IN ($checks)" ; 
      echo $sql; 

      $result= @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno()); 


      $res = $DB->dbRows($sql); 



      foreach($res as $d) { 

       $objPHPExcel->getActiveSheet()->setCellValue('A'.$row, $d['id']); 
       $objPHPExcel->getActiveSheet()->setCellValue('B'.$row, $d['Brand']); 
       $objPHPExcel->getActiveSheet()->setCellValue('C'.$row, $d['Bill_date']); 
       $objPHPExcel->getActiveSheet()->setCellValue('D'.$row, $d['Invoice_no']); 
       $objPHPExcel->getActiveSheet()->setCellValue('E'.$row, $d['Bill_to_party']); 
       $objPHPExcel->getActiveSheet()->setCellValue('F'.$row, $d['Product']); 
       $objPHPExcel->getActiveSheet()->setCellValue('G'.$row, $d['Category']); 
       $objPHPExcel->getActiveSheet()->setCellValue('H'.$row, $d['Category_product']); 
       $objPHPExcel->getActiveSheet()->setCellValue('I'.$row, $d['Barcode']); 
       $objPHPExcel->getActiveSheet()->setCellValue('J'.$row, $d['Size']); 
       $objPHPExcel->getActiveSheet()->setCellValue('K'.$row, $d['Shade']); 
       $objPHPExcel->getActiveSheet()->setCellValue('L'.$row, $d['MRP']); 
       $objPHPExcel->getActiveSheet()->setCellValue('M'.$row, $d['Quantity']); 
       $objPHPExcel->getActiveSheet()->setCellValue('N'.$row, $d['Item_code']);    
       $objPHPExcel->getActiveSheet()->setCellValue('O'.$row, $d['Material_desc']); 
       $objPHPExcel->getActiveSheet()->setCellValue('P'.$row, $d['CD']);    
       $objPHPExcel->getActiveSheet()->setCellValue('Q'.$row, $d['TD']); 
       $objPHPExcel->getActiveSheet()->setCellValue('R'.$row, $d['SP.CD']); 
       $objPHPExcel->getActiveSheet()->setCellValue('S'.$row, $d['Rate']); 
       $objPHPExcel->getActiveSheet()->setCellValue('T'.$row, $d['Net_amount']); 
       $objPHPExcel->getActiveSheet()->setCellValue('U'.$row, $d['Delivery_no']); 

       $row++; 
      } 
     } 

     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
     $objWriter->save('php://output'); 

     exit; 
    } 
+0

顯示$ check是什麼。一個數組我猜? – Akintunde007

+0

$ checks = implode(「,」,array_map('doubleval',$ _REQUEST ['check'])); – starscream

+0

做這個var_dump。 $ check或$ res?上的 – Akintunde007

回答

1

PHP代碼區分大小寫。

你有你的變種$Db = @mysql_select_db(...

但你試着叫它global $DB;剛剛得到null我想。由於它沒有定義。

只需嘗試global $Db; 或將初始實例化更改爲 $DB = @mysql_select_db(...

希望這會有所幫助。

警告停止使用mysql_功能。他們已被棄用。瞭解mysqli和/或PDO的功能。

相關問題