我正在使用php讀取excel並將這些記錄存儲在mysql。我遇到了PHPExcel,這是一組非常好的插件類,它們可以很容易地幫助實現它試圖通過搜索,但沒有類似於我的用例。另外,不太好在面向對象的PHP,我很短的時間在這樣做。SQL插入數據使用PHPExcel從Excel中讀取
First Name Last Name Nationality Gender Date of Birth Time of Birth Date/Time PHP Coder Sanity %Age
以上是我對樣本數據庫列和首先排我的Excel sheet.I的希望將它們插入到數據庫之前,以配合我行的列名。 我的代碼到現在爲我提供了一個2維數組,其中我得到了列名和值。我想在插入之前檢查列名的原因是,我的excels可以按列名的任何順序排列。 我在包中使用exampleReader01,並使用一些SO參考來實現此目的。
$headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true);
$headingsArray = $headingsArray[1];
$r = -1;
$namedDataArray = array();
for ($row = 2; $row <= $highestRow; ++$row) {
$dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
++$r;
foreach($headingsArray as $columnKey => $columnHeading){
$namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
}
}
}
現在我想要一些幫助,我該如何將它插入右欄。 我的陣列是這樣的
Array
(
[0] => Array
(
[First Name] => Mark
[Last Name] => Baker
[Nationality] => British
[Gender] => M
[Date of Birth] => 19-Dec-60
[Time of Birth] => 1:30
[Date/Time] => 22269.0625
[PHP Coder] => 1
[Sanity %Age] => 32%
)
[1] => Array
(
[First Name] => Toni
[Last Name] => Baker
[Nationality] => British
[Gender] => F
[Date of Birth] => 24-Nov-50
[Time of Birth] => 20:00
[Date/Time] => 18591.83333
[PHP Coder] =>
[Sanity %Age] => 95%
)
[2] => Array
(
[First Name] => Rachel
[Last Name] => Baker
[Nationality] => British
[Gender] => F
[Date of Birth] => 7-Dec-82
[Time of Birth] => 0:15
[Date/Time] => 30292.01042
[PHP Coder] =>
[Sanity %Age] => 100%
)
)
希望我很清楚。
感謝您的時間。
如果我得到你的權利,你的意思是我應該有一個靜態數組,有我的列名和我的地圖與數據庫中的列號。 例如:'First Name => col1,Last Name => col2'等等。請您詳細闡述一下邏輯如何檢查映射,我已經添加了我的表結構和列名。 感謝您的努力。 – KillABug
對不起,不得不切換$ dbMapping值,但我用僞代碼更新了一點,以顯示總體思路 – dispake
我嘗試像這樣的foreach($ namedDataArray as $ key => $ value) {$ sql = 「insert into tbl_user(」。$ fieldset。「)values(」。「'」。$ value ['First Name']。「'」。「,」。「'」。$ value ['Last Name']。 「 '」。 「」。 「'」。$值 '國籍'。 「 '」。 「」。 「'」。$值 '性別'。 「」「。 」「。」' 「。」$ value ['出生日期']。「'」。「,」。「'」。$ value ['出生時間']。「'」。「,」。「'」。$ value [日期/時間']。''「。」,「。」'「。$ value ['PHP Coder']。」'「。」,「。」'「。$ value ['Sanity%Age']。」 「) 「」。」; '但是,當列順序不變時(在Excel中),這是很好的。 $ fieldset保存列表。但我的excel可能按列的順序不同,但名稱是一致的 – KillABug