我正在將CSV文件導入數據庫,這是一個多步驟的過程。PHP CSV導入問題
步驟如下:
- 步驟1:用戶上傳CSV文件。
- 第2步:用戶將數據關聯到數據類型。例如,如果CSV中的記錄包含以下數據:
John,Doe,[email protected]
,則用戶將從下拉框中選擇名字以與數據值John關聯,與關聯到數據值Doe的下拉框關聯的姓氏以及來自某個數據值的電子郵件地址下拉框,聯營的數據值[email protected] - 步驟3:將數據插入數據庫
我的問題有以下幾點:
1 /第3步,我會在我擁有用戶選擇的列和原始數據。
這裏是原來的數據是這樣的:
$data = array(
0 => array('John','Doe','[email protected]'),
1 => array('Foo','Bar','[email protected]')
);
這裏就是我的列從第2步選擇的樣子:
$columns = array('firstname','lastname','emailaddress')
如何創建一個SQL查詢,可像下面這樣:
INSERT into contacts (id,firstname,lastname,emailaddress) values (null,'John','Doe','[email protected]')
正如你所看到的,sql查詢具有按照它們在數組中的順序選擇的列,然後是值。我在想,既然列是按照數據的順序選擇的,我可以假設數據的順序是正確的,並與該位置的特定列相關聯(例如,我可以假設數據值' John'與列數組的第一個位置關聯,反之亦然)。
2. /我在考慮一種可能的情況,即當用戶進行文件的初始上傳時,他們可能會發送一個csv文件,其中第一個記錄具有空白字段。問題是,我根據csv記錄中的列數來確定用戶與數據關聯的列數。在這種情況下,我們有2列,每個後續記錄有3列。那麼,我不打算遍歷整組記錄來確定正確的列數。我該如何解決這個問題?有任何想法嗎?
編輯
我想我找到了答案回答問題2 CSV文件的解析,我可以爲每個記錄,並在解析結束最高計數的計數是我的計數。好像?有什麼問題呢?
我沒有談及你的第二個問題,但你的解決方案是我想要的。僞代碼:如果numFieldsCurrLine> maxFieldsSeen,則maxFieldsSeen = numFieldsCurrLine; –