2011-06-19 34 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 

?>