2013-03-14 102 views
0

我正在尝试读取文本文件。阅读txt文件日期00-00-000

这是我的文本文件的例子:

“20130228”, “0000079511”, “ESTEVES PAIVA TERESA赫”, “”, “4”, “PAGO UNICO”, “”, “”,“”,“”,“”,0.00,0.00,0.00,0.00,2000.00,“20121213”

,你可以想像我有这两个日期20130228和20121213,第5列是一个数字,但是当我读取文件并填写数据库中的表时,我在每个日期中获得00-00-0000,而0代替数字4.

这里是我的阅读,并在表中插入信息码:

if ($type == "text/csv") { 
      move_uploaded_file($temp, "upload/$name"); 

      $fp = fopen("upload/$name",'r') or die("no se puede abrir el archivo"); 

       do { 
      if ($data[0]) { 
       mysql_query("INSERT INTO contacts (fecha_pago, cedula_alumno, nombre_alumno, mencion, codigo_forma) VALUES 
        ( 
         '".addslashes($data[0])."', 
         '".addslashes($data[1])."', 
         '".addslashes($data[2])."' 
         '".addslashes($data[3])."' 
         '".addslashes($data[4])."' 
        ) 
       "); 
      } 
     } while ($data = fgetcsv($fp,1000,",","'")); 

在此先感谢您的帮助

+1

[**请不要在新代码**中使用'mysql_ *'函数](http://bit.ly/phpmsql)。他们不再被维护[并且被正式弃用](http://j.mp/XqV7Lp)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。 – Kermit 2013-03-14 19:08:47

+1

我建议修理你的缩进,所以很清楚支架与哪个结构对齐。另外,在'do'循环的第一次运行期间'$ data'有什么值?如果它是未定义的,那么我想知道这个循环应该是'while'而不是'do ... while'吗? – halfer 2013-03-14 19:09:01

回答

1

您需要解析的日期,也就是解析的$数据[0值],然后再执行INSERT。 MySQL的,我猜你插入,将接受日期格式2012-12-31,但不是20121231.

所以考虑做

$parsedDateYear = substr($data[0], 0, 4); 
$parsedDateMonth = substr($data[0], 4, 2); 
$parsedDateDay = substr($data[0], 6, 2); 

$finalDate = $parsedDateYear . "-" . $parsedDateMonth . "-" . $parsedDateDay; 

而在你的INSERT使用$ finalDate声明。

+0

谢谢亚历克斯,但例如,日期是20130228我得到$ finalDate = 2048; – Jean 2013-03-14 19:37:09

+0

我解决了它。谢谢 – Jean 2013-03-14 19:39:05

+0

这是因为我搞砸了,并且使用了+来进行字符串连接:)对不起,我最近做了太多的Python。修复了答案。 – 2013-03-14 22:22:29