2016-03-23 15 views
0

結果セットを反復処理し、PHPExcelを使用してデータをエクスポートするのに列名と値を取得しようとしていますが、$qVistadet->fetchallは機能しません以下のコードを入力し、undefined offsetのようなエラーを取得します。

しかし、$qVistadet->fetchは動作しますが、結果セットの最初の行だけを返すため、役に立ちません。

問題についてお手伝いできますか?

$qVistadet = $db->prepare("CALL spvistadetailsbystaffid(?)"); 
    $qdetails->bindParam (1, $staffid); 
    $qdetails->execute(); 

     $col=0; 
     $row1=1; 

     while($row = $qVistadet->fetchAll(PDO::FETCH_ASSOC)) 
      { 
     foreach ($row as $key=>$value) 
       {   
       $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, 1, $key); 
       $objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($col, $row1 + 1, $value); 
       $col++; 
       } 
      $row1++; 
      } 
+0

すべてをフェッチしている場合、なぜ 'while'ループが必要ですか?私は混乱している。 –

+0

'PDO :: fetchAll'は結果セット全体を配列の数値配列にフェッチします。 'fetchAll'を単純な' fetch'で置き換え、他に何も変更しないと、あなたのコードはうまくいくはずです。 –

+0

しかし、フェッチは単一の行だけを返しています。 – Wings2fly

答えて

0

以下の変更により問題が解決されました。ありがとう。

$qVistadet = $db->prepare("CALL spvistadetailsbystaffid(?)"); 
$qVistadet->bindParam (1, $staffid); 
$qVistadet->execute(); 


$col=0; 
$row1=2; 
while ($arrValues = $qVistadet->fetch(PDO::FETCH_ASSOC)) 
    { 

     foreach ($arrValues as $key=>$value){ 

      $sheet->setCellValueByColumnAndRow($col, 1, $key); 
      $sheet->setCellValueByColumnAndRow($col, $row1, $value); 
      $col++; 
      } 
     $row1++; 
     $col=0; 
    } 
関連する問題