2011-06-19 55 views
1

即時通訊新的PHP,我希望你可以幫助一個簡單的腳本。我有這個通用格式的TXT文件:在php中讀取一個txt文件並解析數據到MySQL

5TB-2A, L+, 1, 1695, 3255, l.jpg 
5TB-2A, L-, 2, 1965, 3270, l.jpg 
5TB-2A, D-, 7, 2970, 3270, l.jpg 
5TB-2A, DFOK, 8, 3225, 3300, l.jpg 

我想用PHP來分隔每個數據retrive讀這個txt文件「」在我的MySQL表。謝謝你的幫助。

+0

MySQL支持使用'LOAD DATA INFILE'語法導入CSV或類似的文本文件,就像一般性註釋一樣。 –

回答

4
$lines=file($yourTxt); 

foreach($lines as $v) { 
    $values = explode(',',$v); 
    PDO::prepare("INSERT INTO tbl (?,?,?,?,?)"); 
    PDO::execute($values); 
} 

可以作進一步檢查過查看是否剛讀線是確定這樣的:

foreach($lines as $v) { 
    $values = explode(',',$v); 
    if (count($values)!=6) 
    continue; 
} 
+3

有時將FILE_SKIP_EMPTY_LINES作爲第二個參數傳遞很有用。 – Darmen

+0

+1,我在答案中添加了一個safier檢查 – dynamic

1

你可以使用fgetcsv(http://php.net/fgetcsv)讀取文件插入到PHP中的數組中,然後編寫一個查詢將其一次一行地插入表中。

1
<?php 
$results = array(); 
$rows = file($filename, FILE_SKIP_EMPTY_LINES); 
if(empty($rows)){ 
    // no data to parse 
} else{ 
    foreach($rows as $row){ 
     $values = explode(', ', $row); 
     // keep only those values which have the 5 variables 
     if(count($values) > 5){ 
      $results[] = $values; 
     } 
    } 
} 

// see if we have the correct data 
print_r($results); 

// ... then do your db inserts here 

?>