php csv上传问题

时间:2010-09-10 20:26:08

标签: php

  

可能重复:
  PHP CSV upload files

我有一个csv文件,te文件包含uname,password,fistname,lname,email等字段。 我的要求是当我上传一个csv时,它应该检查重复的用户名和电子邮件,它应该chekc数据库中是否存在uname和password值。 基本上它必须删除所有重复项并上传 我怎样才能实现它?

RONIE

3 个答案:

答案 0 :(得分:4)

function csv_to_array($filename='', $delimiter=',')
{
    if(!file_exists($filename) || !is_readable($filename))
        return FALSE;

    $header = NULL;
    $data = array();
    if (($handle = fopen($filename, 'r')) !== FALSE)
    {
        while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
        {
            if(!$header)
                $header = $row;
            else
                $data[] = array_combine($header, $row);
        }
        fclose($handle);
    }
    return $data;
}

CSV就像这样

"usename","password"     #Header

"robert 1", you_wish
"robert 1", you_wish

输出如下:

Array
(
    [0] => Array
        (
            [username] => robert 1
            [password] => you_wish
        )

    [1] => Array
        (
            [username] => robert 2
            [password] => you_wish
        )

)

参考: http://gist.github.com/385876

答案 1 :(得分:2)

执行此操作的一种简单方法是在数据库中的用户名和电子邮件字段上放置UNIQUE约束,并在尝试插入新内容时查找违反约束的内容(用户名,密码,名字,姓氏,电子邮件) )元组。如果您将其中一个字段设为主键,那么它已经有了一个独特的约束。

另外,我希望你实际上并没有将密码直接存储在数据库中......?

答案 2 :(得分:0)

您很可能需要在几个步骤中完成此操作。

  1. 通过上传接收文件 形式(或任何方法)

  2. 读取文件(你可以 只需使用它的tmp位置 上传到或给它一个 临时名称)

  3. 解析每一行并检查 数据库

  4. 将所有有效行写入 永久地点