2014-11-04 27 views
0

我有一個基本的導入工具,我們正在使用它將數據上傳到使用PHP的數據庫中。 這是一個示例腳本。 我的問題是如何在導入之前驗證標題?基本上對證一個值,以確保正確的文件越來越imported.I到處在網上,但似乎無法找到答案 我的頭是在CSV和TXT上驗證標題

SKU,價格,活動

LOAD DATA LOW_PRIORITY LOCAL INFILE'$ file'INTO TABLE sampleyour_temp_table FIELDS TERMINATED BY '' OPTIONALLY ENCLOSED BY '\「\ n '' 結尾用線' IGNORE 1號線 //繼續運行腳本的休息

我的問題是之前如何驗證頭腳本運行 我使用

$文件= $ _GET [ '文件']; $ 文件= urldecode($文件); //上傳上獲取文件

+0

傳遞'$直接_GET'值到您的查詢是[超級壞主意](HTTP ://bobby-tables.com/)。請絕對確定這是[妥善轉義](http://bobby-tables.com/)。 – tadman 2014-11-04 16:47:31

+0

我明白了。你會推薦什麼是更好的解決方案? – 2014-11-04 19:30:42

+0

逃離事物是一個更好的解決方案。更好:使用支持綁定到佔位符的PDO等數據庫層。 – tadman 2014-11-04 19:44:58

回答

4

我認爲你需要閱讀的$file的第一行,並把它比作頭的一組名單:

$requiredHeaders = array('SKU', 'Price', 'Active'); //headers we expect 

$f = fopen($file, 'r'); 
$firstLine = fgets($f); //get first line of csv file 
fclose($f) 

$foundHeaders = str_getcsv(trim($firstLine), ',', '"'); //parse to array 

if ($foundHeaders !== $requiredHeaders) { 
    echo 'Headers do not match: '.implode(', ', $foundHeaders); 
    die(); 
} 

//run import script… 
+0

感謝您的快速響應。我不確定$ f = fopen($ file,'r');剩下的我可以嘗試,我會讓你知道。 – 2014-11-04 17:20:49

+0

值得注意的是,通過更多的編碼,您可以使「INSERT」語句適應所存在的標題。 – tadman 2014-11-04 19:45:26

+0

你能解釋一下@tadman嗎? – 2014-11-10 16:48:15