web-dev-qa-db-ja.com

致命的なエラー:Function.phpの 'loop'または 'switch'コンテキストにない 'break'

PHPExcelを試していますが、スクリプトを実行すると出力にエラーが表示されます。

致命的なエラー:581行目の/opt/lampp/htdocs/Xlsphp/test/Classes/PHPExcel/Calculation/Functions.phpの 'loop'または 'switch'コンテキストにない 'break'

PHPスクリプトで何が間違っているのか分かりません。すべてが正しいようです。

誰かがそれを解決する方法を知っていますか?

これが私のPHPスクリプトです:

<?php
require_once 'Classes/PHPExcel.php';
require_once 'config.php';

$sql = 'SELECT * FROM tablevalues';
$result = mysqli_query($conn, $sql) or die(mysqli_error($conn));
$fileName = 'test.xls';

// initialise Excel column name
// currently limited to queries with less than 27 columns
$columnArray = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z");

// Instantiate a new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set the active Excel worksheet to sheet 0
$objPHPExcel->setActiveSheetIndex(0);
// Initialise the Excel row number
$rowCount = 1;
// fetch result set column information
$finfo = mysqli_fetch_fields($result);
// initialise columnlenght counter
$columnlenght = 0;
foreach ($finfo as $val) {
    // set column header values
    $objPHPExcel->getActiveSheet()->SetCellValue($columnArray[$columnlenght++] . $rowCount, $val->name);
}
// make the column headers bold
$objPHPExcel->getActiveSheet()->getStyle($columnArray[0]."1:".$columnArray[$columnlenght]."1")->getFont()->setBold(true);

$rowCount++;
// Iterate through each result from the SQL query in turn
// We fetch each database result row into $row in turn

while ($row = mysqli_fetch_array($result, MYSQLI_NUM)) {
    for ($i = 0; $i < $columnlenght; $i++) {
        $objPHPExcel->getActiveSheet()->SetCellValue($columnArray[$i] . $rowCount, $row[$i]);
    }
    $rowCount++;
}
// set header information to force download
header('Content-type: application/vnd.ms-Excel');
header('Content-Disposition: attachment; filename="' . $fileName . '"');
// Instantiate a Writer to create an OfficeOpenXML Excel .xlsx file
// Write the Excel file to filename some_Excel_file.xlsx in the current directory
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
// Write the Excel file to filename some_Excel_file.xlsx in the current directory
$objWriter->save('php://output');

mysqli_close($conn);
?>
14
user979974

「ブレーク」を削除するだけです。 functions.phpファイルのステートメント。 breakはreturnステートメントの後にあるため、致命的なエラーが発生します。

27
Ankit

サードパーティのオープンソースライブラリとの非互換性の問題を解決する適切な方法は、次のとおりです。

  1. 問題のあるライブラリのアップデート済みバージョンがすでにリリースされているかどうかを確認します
  2. ライブラリのメンテナにバグを提出し、修正で差分ファイルを修正した場合、またはgitプルリクエスト

あなたの場合、githubからPHPExcelをダウンロードし、古いライブラリを解凍して上書きしてください。

1