0 レビュー
0 回答
PHPはすべてのExcelファイルをMySqliデータベースにインポートするわけではありません
MySqliデータベースにインポートしたい情報をすべて含む123個のExcelファイルがあります。
Excelファイルの読み取りにPHPSpreadsheetを使用しています。
まず、インポートする必要のあるファイルの量を取得しました。
$path = "echt/";
$fi = new FilesystemIterator($path , FilesystemIterator::SKIP_DOTS);
$num = iterator_count($fi);
次に、インポートする必要のあるすべてのファイルのすべてのファイル名を取得しました。
$filenames = array_diff(scandir($path), array('..', '.'));
$fileSystemIterator = new FilesystemIterator($path);
次に、すべての変数 $filename
を介してforeachループを実行しました。
したがって、foreachループは、実際には、異なるファイルごとにループ内のすべてのコードを実行する必要があります。
しかし、何らかの理由で、私が持っている123のファイルのうち、87のファイルだけがMySqliデータベースにインポートされています。
インポートしたい情報が各Excelファイルの同じセルにあることは確かなので、次のようにすることができます: $brand = $spreadsheet['5']['B']
間違ったセルを選択したので、問題ありません。
しかし、それでもすべてのファイルをインポートするわけではありません。これは、後で5k以上のExcelファイルをインポートするために必要です。
これは、 foreach()
ループ内の私のコードです:
foreach($filename s as $ names){
$ inputFileName = "echt/".$names;
$ inputFileType = IOFactory :: Identification($ inputFileName);
$ reader = new \ PhpOffice \ PhpSpreadsheet \ Reader \ Xls();
$ Spreadsheet = $ reader-> load($ inputFileName);
$ sheetData = $ Spreadsheet-> getActiveSheet()-> toArray(null、true、true、true);
$ merk =($ sheetData ['5'] ['B']!==''?trim($ sheetData ['5'] ['B']):'');
$chassis =($ sheetData ['6'] ['B']!==''?trim($ sheetData ['6'] ['B']):'');
$ kenteken =($ sheetData ['5'] ['F']!==''?trim($ sheetData ['5'] ['F']):'');
$ motornumber =($ sheetData ['6'] ['F']!==''?trim($ sheetData ['6'] ['F']):'');
$ merktype = explode(''、$ merk);
$ cilindernumber = "";
$ eigenaar = "";
$ tel = "";
//ファイルがすでにインポートされているかどうかを確認します
$ stmtselect = $ conn-> prepare('SELECT * FROM auto WHERE Kenteken =?');
$ stmtselect-> bind_param('s'、$ kenteken);
$ stmtselect-> execute();
$ stmtselect-> store_result();
if($ stmtselect-> num_rows> 0){
壊す;
} そうしないと {
$ stmt = $ conn-> prepare('INSERT INTO auto(Kenteken、Merk、Type、 `Aantal Cilinders`、 `Chassis nummer`、 `Motor nummer`、Eigenaar、Telefoonnummer)VALUES(?、?、?、?、? 、?、?、?)');
$ stmt-> bind_param('sssisssi'、$ kenteken、$ merktype [0]、$ merktype [1]、$ cilindernumber、$chassis、$ motornumber、$ eigenaar、$ tel);
if($ stmt-> execute()){
$ stmt-> close();
unset($ stmt);
}
}
}
誰か助けてもらえますか?
よろしくお願いいたします。
編集
問題が何であるかを知りました。
常に2つ以上のキーを持っているとは限らない配列をインポートしたため、うまくいきませんでした。
同じ問題を抱えている人の場合:
if(!array_key_exists('1', $merktype)) {
$val = '';
array_push($merktype, $val);
}
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。