3

PHP では、Excel ファイルをループして MSSQL データベースに挿入しています。このエラーが発生しています:

メッセージ「無効なセル座標 A」を含むキャッチされない例外「PHPExcel_Exception」

ループ内のクエリの 1 つだけを実行すると、このエラーは発生しません。別々に、両方のクエリが機能します。したがって、2つのクエリが実行されているという事実に関係していると確信しています。次のコードでは、両方のテーブルに 1 つの行が挿入され、エラーが発生します。これを修正する方法についてのアイデアはありますか?

コードはこちら...

$dbc = odbc_connect(DB_DRIVER, DB_USER, DB_PASSWORD);
$inputFileName = 'lib/test.xlsx';

try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
} catch(Exception $e) {
    die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
}

//  Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0); 
$highestRow = $sheet->getHighestRow(); 
$highestColumn = $sheet->getHighestColumn();

//  Loop through each row of the worksheet in turn
for ($row = 2; $row <= $highestRow; $row++){ 
//  Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
                                NULL,
                                TRUE,
                                FALSE);

$name = ms_escape_string($rowData[0][0]);
$city = ms_escape_string($rowData[0][2]);
$state = ms_escape_string($rowData[0][3]);
$phone = ms_escape_string($rowData[0][4]);
$website = ms_escape_string($rowData[0][5]);
$profit_status = ms_escape_string($rowData[0][6]);

$query = "insert into account2 ([name], [city], [state], [phone], [website], [type], [created_by], [last_modified_by]) 
values ('$name', '$city', '$state', '$phone', '$website', '6', '3', '3')
SELECT SCOPE_IDENTITY() AS ins_id";

$data = odbc_exec($dbc, $query);

if (odbc_next_result($data)){
    while ($row = odbc_fetch_object($data)) {
        $account_id = $row->ins_id;
    }
    $query = "insert into account_hic2 (account_id, profit_status)
values ('$account_id', '$profit_status')";
}
$data2 = odbc_exec($dbc, $query);

odbc_free_result($data);
odbc_free_result($data2);
}
4

1 に答える 1